<?php
/*########################################*/
//   php网页版文件浏览器（编辑服务器配置用）
//
//   〈controller 部分〉
//   本程序的关键函数是 glob() 请查阅 php 手册
//
//    作者：九天一声啸
//    邮箱：946585434@qq.com
//    日期：2020.8.10
//
/*########################################*/

class Manager{
    
    private $dirDataStructure;  // 对目录进行处理的数组，用于 glob() 函数的目录参数
    private $dirArr;            // glob() 函数获取到文件和目录的数组
    private $icon;              // 图标数组
    private $startDir;
    
    public function __construct(){
        
        //页面初始化时，显示程序目录的上一级目录
        $arr = explode('/', __DIR__);
        array_pop($arr);
        $this->startDir = implode('/', $arr);
                
        if(isset($_SESSION["dir"])){
            $this->dirDataStructure = $_SESSION["dir"];
        }else{
            $this->dirDataStructure = explode('/', $this->startDir);
        }
        
        //设置图标尺寸
        $w = 24;
        $h = 24;
            $pw = 60;  //人物图标
            $ph = 60;  //人物图标
        
        //图标数组初始化
        $this->icon = array(
            'dir'            => '<svg t="1596796300384" class="icon" viewBox="0 0 1164 1024" version="1.1" xmlns='.
                                '"http://www.w3.org/2000/svg" p-id="38822" width="'.$w.'" height="'.$h.'"><path d="M1164.'.
                                '011685 842.367468H0V145.447829h1077.343656c47.910544 0 86.811045 38.900501 86.81'.
                                '1045 86.811045V842.367468h-0.143016zM727.382163 145.447829C727.382163 65.072529 '.
                                '662.309634 0 581.934334 0H0v145.447829h727.382163" fill="#CE9F06" p-id="38823"><'.
                                '/path><path d="M145.447829 648.150996V211.807508h873.116026v436.343488H145.44782'.
                                '9z" fill="#FFFFFF" p-id="38824"></path><path d="M1164.011685 934.470125V369.4117'.
                                '44c0-40.044633-32.607773-72.795423-72.795423-72.795423H72.795423c-40.044633 0-72'.
                                '.795423 32.607773-72.795423 72.795423v564.915364C0 983.810834 40.044633 1023.998'.
                                '484 89.671376 1023.998484h984.668933c49.483726 0.286033 89.671376-40.044633 89.6'.
                                '71376-89.528359z" fill="#FFCD2C" p-id="38825"></path></svg>',
                        
            'picture'        => '<svg t="1596796745630" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns='.
                                '"http://www.w3.org/2000/svg" p-id="42219" width="'.$w.'" height="'.$h.'"><path d="M39.38'.
                                '4615 83.69230799h945.23077v984.615384H39.384615z" fill="#424A60" p-id="42220"></'.
                                'path><path d="M275.692308 331.20492299m-89.974154 0a89.974154 89.974154 0 1 0 17'.
                                '9.948308 0 89.974154 89.974154 0 1 0-179.948308 0Z" fill="#EFCE4A" p-id="42221">'.
                                '</path><path d="M39.384615 807.384615h945.23077v196.923077H39.384615z" fill="#E7'.
                                'ECED" p-id="42222"></path><path d="M964.923077 696.33969199L945.230769 674.46153'.
                                '799 708.923077 457.84615399 502.153846 684.30769199l107.972923 107.972923L689.23'.
                                '0769 871.38461499h275.692308z" fill="#1A9172" p-id="42223"></path><path d="M610.'.
                                '126769 792.28061499L394.180923 576.33476899 59.076923 871.38461499h630.153846z" '.
                                'fill="#25AE88" p-id="42224"></path></svg>',
                                
            'video'         => '<svg t="1596795412795" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns='.
                                '"http://www.w3.org/2000/svg" p-id="20664" width="'.$w.'" height="'.$h.'"><path d="M83.4 '.
                                '323.5S277.5 455 512.3 370.1s382.9-61.9 428.9 37.4v206.4s-101.9-131-428.9-10.7-42'.
                                '8.9-40.5-428.9-40.5V323.5z" fill="#0D4FF7" p-id="20665"></path><path d="M291.9 6'.
                                '66.8c-162.1 0-221-89-224.3-94.2-1.9-3-2.9-6.4-2.9-10V323.5c0-6.9 3.8-13.2 9.9-16'.
                                '.5 6.1-3.2 13.5-2.8 19.2 1 1.9 1.3 189.5 125 412.1 44.5C740.2 267.8 905 285 958.'.
                                '1 399.6c1.1 2.4 1.7 5.1 1.7 7.8v206.4c0 8-5.1 15.1-12.6 17.6-7.5 2.6-15.9 0.1-20'.
                                '.8-6.2-0.8-1-100.1-117.8-407.8-4.7-91.5 33.9-166.2 46.3-226.7 46.3zM102 556.7c18'.
                                '.2 23.3 122.1 132.7 403.8 29.1 238.5-87.7 363-45.3 416.7-11.3V411.8c-46-91.5-192'.
                                '.8-100.4-403.9-24.1-190 68.7-352.4 2.2-416.6-31.7v200.7z" fill="#231815" p-id="2'.
                                '0666"></path><path d="M941.2 140.3H83.4c-10.3 0-18.6-8.3-18.6-18.6S73.1 103 83.4'.
                                ' 103h857.8c10.3 0 18.6 8.3 18.6 18.6s-8.3 18.7-18.6 18.7zM941.2 289.4H83.4c-10.3'.
                                ' 0-18.6-8.3-18.6-18.6s8.3-18.6 18.6-18.6h857.8c10.3 0 18.6 8.3 18.6 18.6s-8.3 18'.
                                '.6-18.6 18.6z" fill="#231815" p-id="20667"></path><path d="M419 289.4c-10.3 0-18'.
                                '.6-8.3-18.6-18.6V121.6c0-10.3 8.3-18.6 18.6-18.6s18.6 8.3 18.6 18.6v149.2c0.1 10'.
                                '.3-8.3 18.6-18.6 18.6zM605.5 289.4c-10.3 0-18.6-8.3-18.6-18.6V121.6c0-10.3 8.3-1'.
                                '8.6 18.6-18.6s18.6 8.3 18.6 18.6v149.2c0.1 10.3-8.3 18.6-18.6 18.6zM232.6 289.4c'.
                                '-10.3 0-18.6-8.3-18.6-18.6V121.6c0-10.3 8.3-18.6 18.6-18.6s18.6 8.3 18.6 18.6v14'.
                                '9.2c0 10.3-8.3 18.6-18.6 18.6zM792 289.4c-10.3 0-18.6-8.3-18.6-18.6V121.6c0-10.3'.
                                ' 8.3-18.6 18.6-18.6s18.6 8.3 18.6 18.6v149.2c0.1 10.3-8.3 18.6-18.6 18.6zM419 92'.
                                '3.5c-10.3 0-18.6-8.3-18.6-18.6V755.7c0-10.3 8.3-18.6 18.6-18.6s18.6 8.3 18.6 18.'.
                                '6v149.2c0.1 10.2-8.3 18.6-18.6 18.6zM605.5 923.5c-10.3 0-18.6-8.3-18.6-18.6V755.'.
                                '7c0-10.3 8.3-18.6 18.6-18.6s18.6 8.3 18.6 18.6v149.2c0.1 10.2-8.3 18.6-18.6 18.6'.
                                'zM232.6 923.5c-10.3 0-18.6-8.3-18.6-18.6V755.7c0-10.3 8.3-18.6 18.6-18.6s18.6 8.'.
                                '3 18.6 18.6v149.2c0 10.2-8.3 18.6-18.6 18.6zM792 923.5c-10.3 0-18.6-8.3-18.6-18.'.
                                '6V755.7c0-10.3 8.3-18.6 18.6-18.6s18.6 8.3 18.6 18.6v149.2c0.1 10.2-8.3 18.6-18.'.
                                '6 18.6z" fill="#231815" p-id="20668"></path><path d="M941.2 923.5H83.4c-10.3 0-1'.
                                '8.6-8.3-18.6-18.6V755.7c0-10.3 8.3-18.6 18.6-18.6h857.8c10.3 0 18.6 8.3 18.6 18.'.
                                '6v149.2c0 10.2-8.3 18.6-18.6 18.6zM102 886.2h820.5V774.3H102v111.9z" fill="#2318'.
                                '15" p-id="20669"></path><path d="M941.2 774.3H83.4c-10.3 0-18.6-8.3-18.6-18.6V27'.
                                '0.8c0-10.3 8.3-18.6 18.6-18.6h857.8c10.3 0 18.6 8.3 18.6 18.6v484.9c0 10.3-8.3 1'.
                                '8.6-18.6 18.6zM102 737h820.5V289.4H102V737z" fill="#231815" p-id="20670"></path>'.
                                '<path d="M83.4 289.4c-10.3 0-18.6-8.3-18.6-18.6V121.6c0-10.3 8.3-18.6 18.6-18.6s'.
                                '18.6 8.3 18.6 18.6v149.2c0 10.3-8.3 18.6-18.6 18.6zM941.2 289.4c-10.3 0-18.6-8.3'.
                                '-18.6-18.6V121.6c0-10.3 8.3-18.6 18.6-18.6s18.6 8.3 18.6 18.6v149.2c0 10.3-8.3 1'.
                                '8.6-18.6 18.6z" fill="#231815" p-id="20671"></path><path d="M419 606.5V420l186.5'.
                                ' 93.2z" fill="#FFFFFF" p-id="20672"></path><path d="M419 625.1c-3.4 0-6.8-0.9-9.'.
                                '8-2.8-5.5-3.4-8.8-9.4-8.8-15.9V420c0-6.5 3.4-12.5 8.8-15.9 5.5-3.4 12.4-3.7 18.1'.
                                '-0.8l186.5 93.2c6.3 3.2 10.3 9.6 10.3 16.7s-4 13.5-10.3 16.7l-186.5 93.2c-2.5 1.'.
                                '4-5.4 2-8.3 2z m18.7-174.9v126.1l126.1-63.1-126.1-63z" fill="#231815" p-id="2067'.
                                '3"></path></svg>',
                             
            'music'          => '<svg t="1596724335243" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns='.
                                '"http://www.w3.org/2000/svg" p-id="10754" width="'.$w.'" height="'.$h.'"><path d="M85.64'.
                                '4951 0c-12.796303 0-26.451671 5.11978-35.836884 15.357766C40.422853 25.597325 34'.
                                '.448728 38.399921 34.448728 51.196224v921.607552c0 12.796303 5.11978 26.451671 1'.
                                '5.359339 35.836885 10.239559 10.239559 23.040582 15.359339 35.836884 15.359339h7'.
                                '50.938264c12.796303 0 26.453244-5.11978 35.838458-15.359339 10.239559-10.239559 '.
                                '15.357766-23.040582 15.357766-35.836885V290.140781L597.657539 0H85.644951z m0 0"'.
                                ' fill="#2D8CF0" p-id="10755"></path><path d="M887.872268 290.134487H648.946592c-'.
                                '12.80889 0-26.459538-5.113486-35.844752-15.365633-10.24428-9.383641-15.364059-23'.
                                '.034289-15.364059-35.836884V0l290.140781 290.140781-0.006294-0.006294z m0 0" fil'.
                                'l="#97C6FF" p-id="10756"></path><path d="M617.853449 340.666745c28.608775-7.8118'.
                                '34 51.908965 7.940851 51.908965 34.988832v328.874259c0 42.622874-45.461252 82.35'.
                                '0729-101.56957 88.803161-56.106744 6.441419-101.586877-20.447651-101.586877-63.1'.
                                '93249 0-42.751891 45.461252-82.361742 101.586877-88.803161 38.154474-4.33309 59.'.
                                '445457 7.245417 59.445457 7.245416V487.046187c0-20.238392-23.09093-12.857664-23.'.
                                '09093-12.857664l-209.272176 61.848009s-24.012931 8.167418-24.012931 27.115637v20'.
                                '1.01193c0 42.622874-41.128163 81.999865-97.247494 89.462408-56.125625 7.46097-10'.
                                '1.527089-18.52498-101.527089-61.135268 0-42.5977 45.401464-83.27273 101.527089-9'.
                                '0.881597 38.14818-5.039537 55.338934 5.900176 55.338934 5.900176V471.914988c0-27'.
                                '.041688 23.230961-55.227224 51.853897-62.971402l236.639554-68.276841h0.006294z m'.
                                '0 0" fill="#FFFFFF" p-id="10757"></path></svg>',
                                            
            'text'           => '<svg t="1596599570423" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns='.
                                '"http://www.w3.org/2000/svg" p-id="1998" width="'.$w.'" height="'.$h.'"><path d="M968 24'.
                                '4.8L744 8H192C161.6 8 136 33.6 136 64v896c0 30.4 25.6 56 56 56h720c30.4 0 56-25.'.
                                '6 56-56V244.8z" fill="#FFFFFF" p-id="1999"></path><path d="M912 1024H192c-35.2 0'.
                                '-64-28.8-64-64V64c0-35.2 28.8-64 64-64h555.2L976 241.6V960c0 35.2-28.8 64-64 64z'.
                                'M192 16C166.4 16 144 36.8 144 64v896c0 27.2 20.8 48 48 48h720c27.2 0 48-20.8 48-'.
                                '48V248L740.8 16H192z" fill="#A0A1A8" p-id="2000"></path><path d="M96 120h368c27.'.
                                '2 0 48 20.8 48 48v345.6c0 27.2-20.8 48-48 48H96c-27.2 0-48-20.8-48-48V168c0-25.6'.
                                ' 20.8-48 48-48z" fill="#00C2E1" p-id="2001"></path><path d="M212.8 656h670.4v32H'.
                                '212.8zM212.8 777.6h670.4v32H212.8zM212.8 897.6h670.4v32H212.8z" fill="#A0A1A8" p'.
                                '-id="2002"></path><path d="M734.4 0L976 241.6H734.4z" fill="#A0A1A8" p-id="2003"'.
                                '></path><path d="M406.4 225.6H172.8v32h100.8v204.8h32V257.6h100.8z" fill="#FFFFF'.
                                'F" p-id="2004"></path></svg>',
                                            
            'configuration' =>  '<svg t="1596601688880" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns='.
                                '"http://www.w3.org/2000/svg" p-id="6271" width="'.$w.'" height="'.$h.'"><path d="M595.01'.
                                '7 974.043H166.62c-65.609 0-119.003-54.637-119.003-121.782V316.562c0-67.072 53.39'.
                                '4-121.783 119.003-121.783h428.398c57.417 0 105.472 41.838 116.59 97.28 15.36-4.3'.
                                '88 30.866-7.899 46.592-9.874-15.58-77.531-82.798-136.046-163.182-136.046H342.31c'.
                                '11.117-55.588 59.172-97.426 116.59-97.426h231.13c65.683 0 119.077 54.638 119.077'.
                                ' 121.71V280.43c16.092 0.731 31.89 2.925 47.543 6.144V170.423C856.65 76.434 781.9'.
                                '7 0 690.103 0H458.97C375.223 0 306.47 63.78 294.766 146.14H166.619C74.752 146.14'.
                                ' 0 222.573 0 316.561v535.699c0 93.988 74.752 170.422 166.62 170.422h428.397c72.1'.
                                '92 0 133.12-47.542 156.306-113.298a302.592 302.592 0 0 1-46.372-10.752 119.15 11'.
                                '9.15 0 0 1-109.934 75.41zM142.775 322.56H459.63v36.571H142.775V322.56z m0 162.37'.
                                '7h244.004v36.498H142.775v-36.571z m0 162.377h244.004v36.499H142.775V647.24z m0 1'.
                                '62.304H459.63v36.572H142.775v-36.572z m829.147-226.596l43.667-16.457a11.995 11.9'.
                                '95 0 0 0 6.875-15.36l-36.352-100.572a11.63 11.63 0 0 0-14.994-7.022l-43.52 16.38'.
                                '4c-5.998 2.341-13.312 1.317-16.238-2.194-2.926-3.51-8.997-17.042-6.363-22.894l19'.
                                '.456-43.154a12.069 12.069 0 0 0-5.706-15.799l-95.158-44.91a11.557 11.557 0 0 0-1'.
                                '5.434 5.852L788.7 380.05c-2.706 5.925-8.557 10.533-13.019 10.24-4.389-0.292-18.1'.
                                '4-5.34-20.334-11.483l-16.091-44.69a11.703 11.703 0 0 0-14.994-7.095l-98.304 37.1'.
                                '56a11.995 11.995 0 0 0-6.949 15.36l16.091 44.617c2.195 6.071 1.317 13.605-2.194 '.
                                '16.604-3.364 2.926-16.457 9.216-22.308 6.436l-42.13-19.894a11.557 11.557 0 0 0-1'.
                                '5.434 5.851l-43.886 97.426a12.142 12.142 0 0 0 5.632 15.8l42.13 19.894c5.852 2.7'.
                                '8 10.314 8.777 10.021 13.166-0.22 4.608-5.266 18.651-11.264 20.919l-43.593 16.45'.
                                '7a11.995 11.995 0 0 0-6.875 15.36l36.279 100.644a11.703 11.703 0 0 0 14.92 7.095'.
                                'l43.594-16.457c5.998-2.34 13.385-1.317 16.238 2.194 2.998 3.365 9.07 16.896 6.36'.
                                '3 22.894l-19.456 43.008a12.142 12.142 0 0 0 5.705 15.799l95.232 44.983c5.852 2.7'.
                                '06 12.8 0.073 15.433-5.852l19.456-43.08c2.633-5.999 8.485-10.533 12.947-10.24 4.'.
                                '388 0.219 18.139 5.339 20.333 11.483l16.092 44.544c2.194 6.144 8.923 9.362 14.92'.
                                ' 7.094l98.451-37.083a12.142 12.142 0 0 0 6.876-15.36l-16.092-44.617c-2.194-6.144'.
                                '-1.243-13.605 2.194-16.604 3.438-2.998 16.53-9.216 22.455-6.436l42.057 19.895a11'.
                                '.63 11.63 0 0 0 15.434-5.852l43.885-97.426a12.069 12.069 0 0 0-5.778-15.872l-41.'.
                                '984-19.822c-5.851-2.78-9.801-17.188-9.801-21.65 0-4.535 4.9-10.167 10.971-12.434'.
                                'z m-167.79 120.612a115.931 115.931 0 0 1-149.65-70.583c-22.235-61.732 8.631-130.'.
                                '34 69.047-153.16a115.785 115.785 0 0 1 149.577 70.582c22.236 61.806-8.63 130.414'.
                                '-68.973 153.161z" p-id="6272"></path></svg>',
                                            
            'html'           => '<svg t="1596602118701" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns='.
                                '"http://www.w3.org/2000/svg" p-id="8578" width="'.$w.'" height="'.$h.'"><path d="M373.76'.
                                ' 514.56c0 74.24 61.44 135.68 135.68 135.68s135.68-61.44 135.68-135.68-61.44-135.'.
                                '68-135.68-135.68-135.68 61.44-135.68 135.68z" fill="#BBBBBB" p-id="8579"></path>'.
                                '<path d="M509.44 307.2h427.52C860.16 148.48 698.88 40.96 512 40.96c-135.68 0-258'.
                                '.56 56.32-343.04 148.48l145.92 256c28.16-79.36 104.96-138.24 194.56-138.24z" fil'.
                                'l="#F75B60" p-id="8580"></path><path d="M550.4 716.8c-12.8 2.56-28.16 5.12-40.96'.
                                ' 5.12-74.24 0-138.24-38.4-174.08-94.72L120.32 250.88c-51.2 74.24-79.36 163.84-79'.
                                '.36 261.12 0 227.84 161.28 417.28 376.32 460.8l-10.24-5.12 143.36-250.88z" fill='.
                                '"#00D19C" p-id="8581"></path><path d="M962.56 378.88H665.6c30.72 35.84 51.2 84.4'.
                                '8 51.2 135.68 0 40.96-10.24 76.8-30.72 110.08l-207.36 358.4c10.24 0 23.04 2.56 3'.
                                '3.28 2.56 261.12 0 471.04-209.92 471.04-471.04 0-48.64-7.68-94.72-20.48-135.68z"'.
                                ' fill="#FCA253" p-id="8582"></path></svg>',

            'code'           => '<svg t="1596601854150" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns='.
                                '"http://www.w3.org/2000/svg" p-id="6607" width="'.$w.'" height="'.$h.'"><path d="M935.49'.
                                '7143 73.874286a53.906286 53.906286 0 0 0-18.651429-40.96 63.488 63.488 0 0 0-44.'.
                                '397714-17.115429H312.466286a25.819429 25.819429 0 0 0-19.968 8.850286L93.622857 '.
                                '260.608a22.893714 22.893714 0 0 0-5.12 14.262857v672.914286c0 31.963429 28.30628'.
                                '6 58.075429 63.049143 58.075428h720.896c34.742857 0 63.049143-26.112 63.049143-5'.
                                '8.148571V73.874286zM173.421714 241.664l119.734857-141.677714 23.186286-27.282286'.
                                'v187.318857H157.257143l16.091428-18.358857z m711.899429 706.048v11.849143H138.02'.
                                '0571V306.907429H302.811429c34.742857 0 63.049143-26.112 63.049142-58.148572V62.0'.
                                '25143h519.460572v885.76z" p-id="6608" fill="#1296db"></path><path d="M547.401143'.
                                ' 382.756571c-1.901714-0.585143-3.218286-0.585143-5.12-0.585142-11.629714 0-21.94'.
                                '2857 7.68-24.502857 18.358857l-66.925715 290.523428c-1.316571 5.851429 0 12.4342'.
                                '86 3.218286 17.188572a23.990857 23.990857 0 0 0 16.091429 10.093714c1.901714 0.5'.
                                '85143 3.218286 0.585143 5.12 0.585143 11.629714 0 21.942857-7.753143 24.502857-1'.
                                '8.432l66.925714-290.450286a22.820571 22.820571 0 0 0-3.218286-17.188571 25.52685'.
                                '7 25.526857 0 0 0-16.091428-10.093715z m-163.474286 46.811429a26.477714 26.47771'.
                                '4 0 0 0-18.066286-6.509714 29.037714 29.037714 0 0 0-17.993142 6.582857L237.1291'.
                                '43 531.456a30.72 30.72 0 0 0 0 45.714286l110.738286 101.961143c4.534857 4.096 10'.
                                '.971429 6.509714 17.408 6.509714a24.356571 24.356571 0 0 0 17.993142-7.094857 21'.
                                '.284571 21.284571 0 0 0 0-32.036572L293.156571 562.980571l-8.996571-8.265142 8.9'.
                                '96571-8.338286 91.428572-84.114286a22.308571 22.308571 0 0 0 7.021714-16.676571 '.
                                '22.674286 22.674286 0 0 0-7.68-16.018286zM650.971429 686.299429a29.037714 29.037'.
                                '714 0 0 0 17.993142-6.582858L779.776 577.828571a31.158857 31.158857 0 0 0 10.24-'.
                                '22.528 31.158857 31.158857 0 0 0-10.24-22.528L669.037714 430.811429a26.038857 26'.
                                '.038857 0 0 0-17.334857-6.582858 24.356571 24.356571 0 0 0-18.066286 7.168 21.28'.
                                '4571 21.284571 0 0 0 0 31.963429l90.770286 83.602286 8.996572 8.338285-8.996572 '.
                                '8.265143-91.428571 84.187429a21.942857 21.942857 0 0 0 0 32.621714c5.12 3.584 11'.
                                '.629714 5.924571 18.066285 5.924572z" p-id="6609" fill="#1296db"></path></svg>',

            'dll'            => '<svg t="1596636558779" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns='.
                                '"http://www.w3.org/2000/svg" p-id="14293" width="'.$w.'" height="'.$h.'"><path d="M128 9'.
                                '6h564.672L896 315.04V928H128z" fill="#FFFFFF" p-id="14294"></path><path d="M704 '.
                                '96.224l0.064-0.032L894.976 288H896v640H128V96h576v0.224z m0 45.28V288h145.824L70'.
                                '4 141.504zM672 128H160v768h704V320h-192V128z" fill="#5D6D7E" p-id="14295"></path'.
                                '><path d="M224 832h576v32H224z" fill="#30AD98" p-id="14296"></path><path d="M736'.
                                ' 480a32 32 0 0 1 32 32v32a32 32 0 0 1-32 32h-37.568a206.784 206.784 0 0 1-25.376'.
                                ' 61.184l26.592 26.56a32 32 0 0 1 0 45.28l-22.624 22.624a32 32 0 0 1-45.248 0l-26'.
                                '.56-26.56c-18.688 11.52-39.264 20.16-61.216 25.344V768a32 32 0 0 1-32 32h-32a32 '.
                                '32 0 0 1-32-32v-37.568a206.784 206.784 0 0 1-61.184-25.376l-26.56 26.592a32 32 0'.
                                ' 0 1-45.28 0l-22.624-22.624a32 32 0 0 1 0-45.248l26.56-26.56A206.784 206.784 0 0'.
                                ' 1 293.6 576H256a32 32 0 0 1-32-32v-32a32 32 0 0 1 32-32h37.568c5.184-21.952 13.'.
                                '856-42.56 25.376-61.184l-26.592-26.56a32 32 0 0 1 0-45.28l22.624-22.624a32 32 0 '.
                                '0 1 45.248 0l26.56 26.56A206.784 206.784 0 0 1 448 325.6V288a32 32 0 0 1 32-32h3'.
                                '2a32 32 0 0 1 32 32v37.568c21.952 5.184 42.56 13.856 61.184 25.376l26.56-26.592a'.
                                '32 32 0 0 1 45.28 0l22.624 22.624a32 32 0 0 1 0 45.248l-26.56 26.56c11.52 18.688'.
                                ' 20.16 39.264 25.344 61.216H736z m-68.704 7.36a174.784 174.784 0 0 0-21.44-51.71'.
                                '2l-13.312-21.568 44.48-44.48-22.624-22.624-44.48 44.48-21.568-13.312a174.784 174'.
                                '.784 0 0 0-51.712-21.44l-24.64-5.824V288h-32v62.88l-24.64 5.824a174.784 174.784 '.
                                '0 0 0-51.712 21.44l-21.568 13.312-44.48-44.48-22.624 22.624 44.48 44.48-13.312 2'.
                                '1.568a174.784 174.784 0 0 0-21.44 51.712l-5.824 24.64H256v32h62.88l5.824 24.64c4'.
                                '.32 18.336 11.584 35.776 21.44 51.712l13.312 21.568-44.48 44.48 22.624 22.624 44'.
                                '.48-44.48 21.568 13.312a174.784 174.784 0 0 0 51.712 21.44l24.64 5.824V768h32v-6'.
                                '2.88l24.64-5.824a174.784 174.784 0 0 0 51.712-21.44l21.568-13.312 44.48 44.48 22'.
                                '.624-22.624-44.48-44.48 13.312-21.568a174.784 174.784 0 0 0 21.44-51.712l5.824-2'.
                                '4.64H736v-32H673.12l-5.824-24.64z m-170.72 153.152a112 112 0 1 1 0-224 112 112 0'.
                                ' 0 1 0 224z m0-32a80 80 0 1 0 0-160 80 80 0 0 0 0 160z" fill="#27A2DF" p-id="142'.
                                '97"></path></svg>',

            'library'        => '<svg t="1596635584632" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns='.
                                '"http://www.w3.org/2000/svg" p-id="7812" width="'.$w.'" height="'.$h.'"><path d="M315.63'.
                                ' 118.583H95.098c-17.6 0-32 14.4-32 32v746.918c0 17.6 14.4 32 32 32H315.63c17.6 0'.
                                ' 32-14.4 32-32V150.583c0-17.6-14.4-32-32-32z m-39.133 245.399H134.231c-17.673 0-'.
                                '32-14.327-32-32s14.327-32 32-32h142.266c17.673 0 32 14.327 32 32s-14.327 32-32 3'.
                                '2z m0-113.813H134.231c-17.673 0-32-14.327-32-32s14.327-32 32-32h142.266c17.673 0'.
                                ' 32 14.327 32 32s-14.327 32-32 32zM571.71 118.583h-149.4c-17.6 0-32 14.4-32 32v7'.
                                '46.918c0 17.6 14.4 32 32 32h149.4c17.6 0 32-14.4 32-32V150.583c0-17.6-14.4-32-32'.
                                '-32z m-10.68 245.399H432.99c-17.673 0-32-14.327-32-32s14.327-32 32-32h128.04c17.'.
                                '673 0 32 14.327 32 32s-14.327 32-32 32z m0-113.813H432.99c-17.673 0-32-14.327-32'.
                                '-32s14.327-32 32-32h128.04c17.673 0 32 14.327 32 32s-14.327 32-32 32zM955.119 87'.
                                '2.454L819.663 152.356c-3.254-17.297-20.068-28.786-37.364-25.533l-135.388 25.468c'.
                                '-17.297 3.254-28.786 20.067-25.533 37.364l135.456 720.098c3.254 17.297 20.068 28'.
                                '.786 37.364 25.533l135.388-25.468c17.297-3.254 28.787-20.067 25.533-37.364z m-30'.
                                '8.92-627.011a32.044 32.044 0 0 1-1.002-7.949c0.005-14.272 9.629-27.279 24.094-30'.
                                '.971l102.455-26.15c17.122-4.372 34.548 5.967 38.92 23.092a32.044 32.044 0 0 1 1.'.
                                '002 7.949c-0.005 14.272-9.629 27.279-24.094 30.971l-102.455 26.15a32.046 32.046 '.
                                '0 0 1-7.938 1.002c-14.276 0-27.288-9.624-30.982-24.094z m169.523 107.219l-102.45'.
                                '5 26.151a32.046 32.046 0 0 1-7.938 1.002c-14.276 0-27.289-9.625-30.982-24.094a32'.
                                '.044 32.044 0 0 1-1.002-7.949c0.005-14.272 9.629-27.279 24.094-30.971l102.455-26'.
                                '.151c17.122-4.372 34.548 5.967 38.92 23.092a32.044 32.044 0 0 1 1.002 7.949c-0.0'.
                                '05 14.272-9.629 27.279-24.094 30.971z" p-id="7813" fill="#1296db"></path></svg>',

            'compressed'     => '<svg t="1596604216879" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns='.
                                '"http://www.w3.org/2000/svg" p-id="3150" width="'.$w.'" height="'.$h.'"><path d="M907.63'.
                                '6364 907.636364H246.690909C174.545455 907.636364 116.363636 849.454545 116.36363'.
                                '6 777.309091v-4.654546c0-72.145455 58.181818-130.327273 130.327273-130.327272H90'.
                                '7.636364V907.636364z" fill="#71AB68" p-id="3151"></path><path d="M907.636364 642'.
                                '.327273H246.690909C174.545455 642.327273 116.363636 584.145455 116.363636 512v-4'.
                                '.654545c0-72.145455 58.181818-130.327273 130.327273-130.327273H907.636364v265.30'.
                                '9091z" fill="#4996C1" p-id="3152"></path><path d="M907.636364 379.345455H246.690'.
                                '909c-72.145455 0-130.327273-58.181818-130.327273-130.327273v-4.654546C116.363636'.
                                ' 174.545455 174.545455 116.363636 246.690909 116.363636H907.636364v262.981819z" '.
                                'fill="#814F96" p-id="3153"></path><path d="M907.636364 118.690909c-60.509091 11.'.
                                '636364-107.054545 65.163636-107.054546 128s46.545455 118.690909 107.054546 128v-'.
                                '256zM907.636364 384c-60.509091 11.636364-107.054545 65.163636-107.054546 128s46.'.
                                '545455 118.690909 107.054546 128v-256zM907.636364 646.981818c-60.509091 11.63636'.
                                '4-107.054545 65.163636-107.054546 128s46.545455 118.690909 107.054546 128v-256z"'.
                                ' fill="#DFEAF7" p-id="3154"></path><path d="M218.763636 188.509091h41.890909c2.3'.
                                '27273 0 4.654545 2.327273 4.654546 4.654545v118.690909c0 2.327273-2.327273 4.654'.
                                '545-4.654546 4.654546H218.763636c-2.327273 0-4.654545-2.327273-4.654545-4.654546'.
                                'V193.163636c0-4.654545 2.327273-4.654545 4.654545-4.654545zM218.763636 451.49090'.
                                '9h41.890909c2.327273 0 4.654545 2.327273 4.654546 4.654546v118.690909c0 2.327273'.
                                '-2.327273 4.654545-4.654546 4.654545H218.763636c-2.327273 0-4.654545-2.327273-4.'.
                                '654545-4.654545v-118.690909c0-2.327273 2.327273-4.654545 4.654545-4.654546zM218.'.
                                '763636 712.145455h41.890909c2.327273 0 4.654545 2.327273 4.654546 4.654545v118.6'.
                                '90909c0 2.327273-2.327273 4.654545-4.654546 4.654546H218.763636c-2.327273 0-4.65'.
                                '4545-2.327273-4.654545-4.654546v-118.690909c0-2.327273 2.327273-4.654545 4.65454'.
                                '5-4.654545z" fill="#FDF7DC" p-id="3155"></path></svg>',

            'pdf'            => '<svg t="1596636738163" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns='.
                                '"http://www.w3.org/2000/svg" p-id="15437" width="'.$w.'" height="'.$h.'"><path d="M892.7'.
                                '16838 922.912556c0 12.878753-5.106865 25.232378-14.178443 34.343341A48.324861 48'.
                                '.324861 0 0 1 844.300079 971.486853H166.557359c-12.82624 0-25.140481-5.119993-34'.
                                '.225187-14.230956A48.653066 48.653066 0 0 1 118.153728 922.912556V48.575216c0-12'.
                                '.878753 5.106865-25.232378 14.178444-34.343341A48.324861 48.324861 0 0 1 166.557'.
                                '359 0.000919h415.848492c12.865625-0.078769 25.232378 4.988712 34.369597 14.08654'.
                                '6l261.907357 262.786945A48.653066 48.653066 0 0 1 892.716838 311.362161V922.9125'.
                                '56z" fill="#EBECF0" p-id="15438"></path><path d="M892.716838 932.102288v45.94865'.
                                '9c0 12.182959-5.106865 23.867046-14.178443 32.492266A49.755834 49.755834 0 0 1 8'.
                                '44.300079 1023.999606H166.570487C139.815239 1023.999606 118.153728 1003.427735 1'.
                                '18.153728 978.050947V932.102288c0 12.182959 5.106865 23.867046 14.178444 32.4922'.
                                '66a49.755834 49.755834 0 0 0 34.225187 13.456393h677.74272a49.755834 49.755834 0'.
                                ' 0 0 34.238316-13.456393A44.793378 44.793378 0 0 0 892.716838 932.102288z" fill='.
                                '"#C1C7D0" p-id="15439"></path><path d="M26.25641 538.256639h971.485934v240.67907'.
                                '6a47.917887 47.917887 0 0 1-14.230956 34.041392A48.797476 48.797476 0 0 1 949.16'.
                                '8048 827.076782H74.830707a48.797476 48.797476 0 0 1-34.343341-14.099675A47.91788'.
                                '7 47.917887 0 0 1 26.25641 778.935715V538.256639z" fill="#FF5630" p-id="15440"><'.
                                '/path><path d="M328.362279 629.878265h67.570786c14.716699 0 25.744377 3.492098 3'.
                                '3.083034 10.502551 7.312401 6.997324 10.988294 16.948491 10.988294 29.879756 0 1'.
                                '3.272598-4.004097 23.656995-11.986036 31.140063-7.981938 7.483067-20.178025 11.2'.
                                '11473-36.575133 11.211473h-22.252279V761.43584h-40.828666V629.878265z m40.828666'.
                                ' 56.083621h9.964295c7.837528 0 13.338239-1.365332 16.515261-4.082867 3.163893-2.'.
                                '717535 4.752404-6.209633 4.752404-10.450038 0-4.135379-1.37846-7.627477-4.122251'.
                                '-10.50255-2.75692-2.875073-7.929426-4.306046-15.530647-4.306046h-11.579062v29.34'.
                                '1501z m92.619368-56.083621h60.389667c11.907267 0 21.530229 1.614767 28.855757 4.'.
                                '844302s13.390752 7.863785 18.169413 13.915879c4.791789 6.038967 8.270759 13.0625'.
                                '47 10.410653 21.083871 2.153023 8.008195 3.229534 16.502133 3.229535 25.481813 0'.
                                ' 14.06029-1.588511 24.969814-4.791789 32.715445a54.140649 54.140649 0 0 1-13.325'.
                                '111 19.469104c-5.684506 5.238147-11.789113 8.717117-18.313823 10.463166-8.91404 '.
                                '2.38933-16.987876 3.583995-24.234635 3.583995h-60.389667V629.878265z m40.644871 '.
                                '29.78786v71.889959h9.977423c8.48081 0 14.532904-0.94523 18.1169-2.835689 3.59712'.
                                '4-1.877331 6.406556-5.172506 8.441425-9.872398 2.034869-4.686763 3.04574-12.3011'.
                                '12 3.04574-22.843047 0-13.929008-2.271177-23.473201-6.826658-28.619451-4.542353-'.
                                '5.14625-12.077933-7.719375-22.60674-7.719374h-10.14809z m101.953511-29.800988h10'.
                                '0.509409v28.278118H645.250488v22.974329h50.976756v26.558325H645.250488V761.43584'.
                                'h-40.828665V629.878265z" fill="#FFFFFF" p-id="15441"></path><path d="M123.352491'.
                                ' 538.256639v-91.897318L26.25641 538.256639h97.096081z m776.794901 0l0.984615-91.'.
                                '897318L997.742344 538.256639h-97.581823z" fill="#DE350B" p-id="15442"></path><pa'.
                                'th d="M905.845026 321.195174V328.205626H639.920444C612.771351 328.205626 590.768'.
                                '507 305.769553 590.768507 278.095332V0.000919a48.679322 48.679322 0 0 1 34.89472'.
                                '5 14.532904l266.410325 271.083961A50.635422 50.635422 0 0 1 905.845026 321.19517'.
                                '4z" fill="#C1C7D0" p-id="15443"></path></svg>',

            'word'           => '<svg t="1596637077739" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns='.
                                '"http://www.w3.org/2000/svg" p-id="16295" width="'.$w.'" height="'.$h.'"><path d="M959.7'.
                                '00094 243.443924L716.57607 0.3199H95.970009a31.990003 31.990003 0 0 0-31.990003 '.
                                '31.990003v959.700094a31.990003 31.990003 0 0 0 31.990003 31.990003h831.740082a31'.
                                '.990003 31.990003 0 0 0 31.990003-31.990003V243.763824zM895.720087 959.700094H12'.
                                '7.960012V63.980006h543.830054v223.930022h223.930021z" fill="#90B7F5" p-id="16296'.
                                '"></path><path d="M0 447.860044h1023.6801v447.860043H0z" fill="#4985E3" p-id="16'.
                                '297"></path><path d="M404.99344 587.336457h26.871602l-54.383005 193.539519h-29.1'.
                                '10903l-38.707904-139.476413a90.851609 90.851609 0 0 1-3.199-19.833802 95.970009 '.
                                '95.970009 0 0 1-3.5189 19.833802l-39.987504 139.476413h-28.791003l-55.982506-193'.
                                '.539519h27.511403l39.347704 145.234615a95.970009 95.970009 0 0 1 3.199 19.833801'.
                                ' 111.965011 111.965011 0 0 1 4.798501-19.833801l41.906904-146.194315H319.900031l'.
                                '39.987504 147.473915a122.201812 122.201812 0 0 1 3.199 18.554201 102.68791 102.6'.
                                '8791 0 0 1 3.518901-18.874101z m155.791315 71.017807a74.536707 74.536707 0 0 1 1'.
                                '7.594501 52.783505 74.216807 74.216807 0 0 1-18.554201 53.423306 65.899406 65.89'.
                                '9406 0 0 1-50.544205 20.153702 63.980006 63.980006 0 0 1-49.584505-20.153702 71.'.
                                '657607 71.657607 0 0 1-18.554202-51.503905 74.536707 74.536707 0 0 1 19.194002-5'.
                                '4.063106 68.778507 68.778507 0 0 1 51.503905-19.513902 63.980006 63.980006 0 0 1'.
                                ' 48.944705 18.874102z m-7.357701 53.423306a60.141206 60.141206 0 0 0-9.597001-38'.
                                '.707904 38.707904 38.707904 0 0 0-31.990003-13.435802 40.307404 40.307404 0 0 0-'.
                                '31.990003 14.075602 58.221806 58.221806 0 0 0-11.836301 38.707904 55.022805 55.0'.
                                '22805 0 0 0 12.156201 37.748203 40.947204 40.947204 0 0 0 31.670103 14.395502 39'.
                                '.027804 39.027804 0 0 0 31.990003-13.435802 59.501406 59.501406 0 0 0 9.597001-3'.
                                '9.347703z m84.453608-41.267105v-28.151202h-24.632302v138.196813h24.632302v-69.73'.
                                '8207a60.141206 60.141206 0 0 1 9.277101-35.189003 27.831303 27.831303 0 0 1 23.3'.
                                '52702-13.435801 28.471103 28.471103 0 0 1 16.954702 4.4786v-24.632302a34.869103 '.
                                '34.869103 0 0 0-12.796001-1.9194 37.748204 37.748204 0 0 0-36.468604 30.710403z '.
                                'm189.060919-95.970009v204.41612h-24.632303v-23.032802a50.544205 50.544205 0 0 1-'.
                                '47.025304 26.231802 51.503905 51.503905 0 0 1-41.906904-17.594501 76.456107 76.4'.
                                '56107 0 0 1-15.355202-50.544205 82.214308 82.214308 0 0 1 17.594502-55.022806 56'.
                                '.942206 56.942206 0 0 1 45.745704-20.793502 43.826304 43.826304 0 0 1 40.947204 '.
                                '22.073102v-84.133708z m-24.312403 122.201812a38.068104 38.068104 0 0 0-10.876601'.
                                '-27.831303 36.148704 36.148704 0 0 0-26.871602-11.196501 36.788504 36.788504 0 0'.
                                ' 0-31.990003 14.715402 63.980006 63.980006 0 0 0-11.196502 39.667604 56.622306 5'.
                                '6.622306 0 0 0 10.876602 36.468603 35.189003 35.189003 0 0 0 28.791002 13.435801'.
                                ' 36.468604 36.468604 0 0 0 29.110903-13.115901 48.944705 48.944705 0 0 0 11.1965'.
                                '01-31.990003z" fill="#FFFFFF" p-id="16298"></path></svg>',

            'excel'          => '<svg t="1596637514874" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns='.
                                '"http://www.w3.org/2000/svg" p-id="17161" width="'.$w.'" height="'.$h.'"><path d="M0 102'.
                                '4h1024V0H0z" fill="#207245" p-id="17162"></path><path d="M541.28 864L160 805.44V'.
                                '218.784L541.28 160v704z m29.376-87.936H864V247.936h-293.344v528.128z" fill="#FFF'.
                                'FFF" p-id="17163"></path><path d="M555.296 553.472h288v-30.176h-288v30.176z m0-1'.
                                '92h288v-30.176h-288v30.176z" fill="#207245" p-id="17164"></path><path d="M632.48'.
                                ' 722.816h30.08V331.296h-30.08z" fill="#207245" p-id="17165"></path><path d="M484'.
                                '.288 361.408l-75.52 7.552-67.52 106.56-52.96-94.56-59.872 5.984 77.888 137.824-9'.
                                '5.488 146.496 58.816 5.76 67.296-102.752 62.912 115.84 74.016 7.36-101.568-172.2'.
                                '56 112-163.808z m78.528 287.968h280.832v-31.968h-280.832v31.968z m0 96h280.832v-'.
                                '31.968h-280.832v31.968z m0-288h280.832v-31.968h-280.832v31.968z" fill="#207245" '.
                                'p-id="17166"></path></svg>',

            'md'             => '<svg t="1596637950989" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns='.
                                '"http://www.w3.org/2000/svg" p-id="2949" width="'.$w.'" height="'.$h.'"><path d="M812.03'.
                                '2 162.304H211.968c-11.776 0-20.992 8.192-20.992 17.92v663.552c0 10.24 9.216 17.9'.
                                '2 20.992 17.92h472.576c5.632 0 10.752-2.048 14.848-5.12l126.976-108.544c4.096-3.'.
                                '584 6.144-8.192 6.144-12.8V180.224c0.512-10.24-9.216-17.92-20.48-17.92z m-104.96'.
                                ' 636.928v-45.568h53.76l-53.76 45.568z m83.968-81.92h-104.448c-11.776 0-20.992 8.'.
                                '192-20.992 17.92v90.624H232.96V198.144h558.08v519.168z" fill="#707070" p-id="295'.
                                '0"></path><path d="M565.248 370.688h150.016c17.92 0 32.256 6.144 32.256 14.336v2'.
                                '0.48c0 7.68-14.336 14.336-32.256 14.336h-150.016c-17.92 0-32.256-6.144-32.256-14'.
                                '.336v-20.48c0-8.192 14.336-14.336 32.256-14.336z m0 116.736h150.016c17.92 0 32.2'.
                                '56 6.144 32.256 14.336v20.48c0 7.68-14.336 14.336-32.256 14.336h-150.016c-17.92 '.
                                '0-32.256-6.144-32.256-14.336v-20.48c0-7.68 14.336-14.336 32.256-14.336z m0 116.7'.
                                '36h150.016c17.92 0 32.256 6.144 32.256 14.336v20.48c0 7.68-14.336 14.336-32.256 '.
                                '14.336h-150.016c-17.92 0-32.256-6.144-32.256-14.336v-20.48c0-7.68 14.336-14.336 '.
                                '32.256-14.336z" fill="#707070" p-id="2951"></path><path d="M284.672 698.368h215.'.
                                '04V407.552h-50.176v240.128H284.672v50.688z" fill="#E5C523" p-id="2952"></path><p'.
                                'ath d="M137.216 326.656h283.136v283.136H137.216z" fill="#E5C523" p-id="2953"></p'.
                                'ath><path d="M358.4 548.864h-29.184v-107.52h-3.072l-34.816 107.008h-23.552l-34.8'.
                                '16-107.008h-3.072v107.008h-29.184V398.336H245.76l32.256 99.328h3.072l32.256-99.3'.
                                '28H358.4v150.528z" fill="#FFFFFF" p-id="2954"></path></svg>',

            'css'            => '<svg t="1596638124299" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns='.
                                '"http://www.w3.org/2000/svg" p-id="3821" width="'.$w.'" height="'.$h.'"><path d="M676.29'.
                                '7 0H145.61c-14.775 0-26.752 11.977-26.752 35.218v970.496c0 6.309 11.977 18.286 2'.
                                '6.752 18.286h732.782c14.775 0 26.752-11.977 26.752-18.286V237.312c0-12.727-1.7-1'.
                                '6.823-4.7-19.84L687.671 4.699A16.165 16.165 0 0 0 676.297 0z" fill="#E9E9E0" p-i'.
                                'd="3822"></path><path d="M685.714 2.761V219.43h216.668z" fill="#D9D7CA" p-id="38'.
                                '23"></path><path d="M878.39 1024H145.61a26.752 26.752 0 0 1-26.753-26.752V713.14'.
                                '3h786.286v284.105c0 14.775-11.977 26.752-26.752 26.752z" fill="#0096E6" p-id="38'.
                                '24"></path><path d="M431.177 950.4c-6.839 6.656-14.592 11.666-23.241 14.994s-17.'.
                                '993 4.992-27.995 4.992c-11.008 0-21.12-1.993-30.373-5.997s-17.335-9.911-24.247-1'.
                                '7.756-12.343-17.664-16.256-29.495c-3.913-11.83-5.87-25.508-5.87-40.996s1.957-29.'.
                                '13 5.87-40.869c3.913-11.758 9.344-21.54 16.256-29.367s15.031-13.787 24.375-17.88'.
                                '3 19.42-6.126 30.245-6.126c10.002 0 19.346 1.664 27.995 4.992s16.402 8.338 23.24'.
                                '1 14.994l-20.754 18.506c-4.17-4.846-8.777-8.339-13.879-10.496s-10.368-3.255-15.8'.
                                '72-3.255c-6.162 0-12.032 1.152-17.627 3.492s-10.588 6.29-14.995 11.868-7.88 12.7'.
                                '81-10.368 21.632-3.84 19.657-4.004 32.493c0.164 12.508 1.463 23.168 3.876 32s5.7'.
                                '42 16.037 10.003 21.632 9.088 9.655 14.5 12.252 11.118 3.876 17.134 3.876 11.63-'.
                                '1.097 16.878-3.254 10.038-5.669 14.372-10.496l20.736 18.267z m147.255-31.762c0 6'.
                                '.656-1.371 13.129-4.133 19.383s-6.619 11.757-11.63 16.493-11.154 8.54-18.504 11.'.
                                '374-15.653 4.242-24.997 4.242c-4.005 0-8.119-0.22-12.38-0.621s-8.539-1.134-12.87'.
                                '3-2.122-8.466-2.377-12.379-4.132-7.278-3.877-10.13-6.382l5.248-21.504c2.34 1.335'.
                                ' 5.284 2.633 8.868 3.877s7.278 2.413 11.118 3.492 7.662 1.957 11.502 2.633 7.405'.
                                ' 1.006 10.752 1.006c10.167 0 17.956-2.377 23.369-7.131s8.119-11.795 8.119-21.12c'.
                                '0-5.669-1.902-10.496-5.742-14.5s-8.63-7.626-14.373-10.88-11.958-6.492-18.633-9.7'.
                                '47-12.91-7.095-18.743-11.502-10.66-9.618-14.5-15.616-5.742-13.495-5.742-22.491c0'.
                                '-8.156 1.5-15.415 4.498-21.742s7.04-11.721 12.124-16.128 11.008-7.79 17.755-10.1'.
                                '3 13.88-3.493 21.376-3.493c7.662 0 15.415 0.713 23.241 2.121s14.154 3.712 19 6.8'.
                                '76a204.396 204.396 0 0 1-3.493 7.131l-3.749 7.241c-1.152 2.25-2.158 4.133-2.999 '.
                                '5.632s-1.335 2.34-1.5 2.505c-1.005-0.493-2.12-1.152-3.382-1.993s-3.035-1.664-5.3'.
                                '76-2.505-5.413-1.408-9.253-1.755-8.758-0.256-14.756 0.256c-3.346 0.347-6.492 1.2'.
                                '8-9.509 2.87s-5.668 3.53-8.009 5.87-4.169 4.956-5.504 7.881-1.993 5.724-1.993 8.'.
                                '375c0 6.656 1.902 12.032 5.742 16.128s8.594 7.662 14.244 10.752 11.831 6.09 18.5'.
                                '05 8.997 12.874 6.473 18.634 10.624 10.532 9.38 14.372 15.616 5.815 14.281 5.815'.
                                ' 24.119z m135.497 0c0 6.656-1.371 13.129-4.132 19.383s-6.62 11.757-11.63 16.493-'.
                                '11.154 8.54-18.505 11.374-15.653 4.242-24.997 4.242c-4.004 0-8.119-0.22-12.38-0.'.
                                '621s-8.539-1.134-12.872-2.122-8.467-2.377-12.38-4.132-7.278-3.877-10.13-6.382l5.'.
                                '248-21.504c2.34 1.335 5.284 2.633 8.868 3.877s7.278 2.413 11.118 3.492 7.662 1.9'.
                                '57 11.502 2.633 7.406 1.006 10.752 1.006c10.167 0 17.956-2.377 23.369-7.131s8.11'.
                                '9-11.795 8.119-21.12c0-5.669-1.902-10.496-5.742-14.5s-8.63-7.626-14.372-10.88-11'.
                                '.96-6.492-18.634-9.747-12.91-7.095-18.742-11.502-10.661-9.618-14.501-15.616-5.74'.
                                '2-13.495-5.742-22.491c0-8.156 1.5-15.415 4.499-21.742s7.04-11.721 12.123-16.128 '.
                                '11.008-7.79 17.755-10.13 13.88-3.493 21.376-3.493c7.662 0 15.415 0.713 23.242 2.'.
                                '121s14.153 3.712 18.998 6.876a204.396 204.396 0 0 1-3.492 7.131l-3.749 7.241c-1.'.
                                '152 2.25-2.157 4.133-2.999 5.632s-1.334 2.34-1.499 2.505c-1.006-0.493-2.121-1.15'.
                                '2-3.383-1.993s-3.035-1.664-5.376-2.505-5.412-1.408-9.252-1.755-8.76-0.256-14.757'.
                                ' 0.256c-3.346 0.347-6.491 1.28-9.509 2.87s-5.668 3.53-8.009 5.87-4.169 4.956-5.5'.
                                '04 7.881-1.993 5.724-1.993 8.375c0 6.656 1.902 12.032 5.742 16.128s8.594 7.662 1'.
                                '4.244 10.752 11.831 6.09 18.506 8.997 12.873 6.473 18.633 10.624 10.532 9.38 14.'.
                                '372 15.616 5.815 14.281 5.815 24.119z" fill="#FFFFFF" p-id="3825"></path><path d'.
                                '="M356.571 347.429v-73.143c0-10.076 8.192-18.286 18.286-18.286a18.286 18.286 0 1'.
                                ' 0 0-36.571c-30.244 0-54.857 24.612-54.857 54.857v73.143C320 367.598 303.598 384'.
                                ' 283.429 384a18.286 18.286 0 1 0 0 36.571c20.169 0 36.571 16.403 36.571 36.572v7'.
                                '3.143c0 30.244 24.613 54.857 54.857 54.857a18.286 18.286 0 1 0 0-36.572c-10.094 '.
                                '0-18.286-8.21-18.286-18.285v-73.143c0-21.943-9.91-41.436-25.27-54.857a72.686 72.'.
                                '686 0 0 0 25.27-54.857zM722.286 384c-20.17 0-36.572-16.402-36.572-36.571v-73.143'.
                                'c0-30.245-24.612-54.857-54.857-54.857a18.286 18.286 0 1 0 0 36.571c10.094 0 18.2'.
                                '86 8.21 18.286 18.286v73.143c0 21.942 9.91 41.435 25.27 54.857a72.686 72.686 0 0'.
                                ' 0-25.27 54.857v73.143c0 10.075-8.192 18.285-18.286 18.285a18.286 18.286 0 1 0 0'.
                                ' 36.572c30.245 0 54.857-24.613 54.857-54.857v-73.143c0-20.17 16.403-36.572 36.57'.
                                '2-36.572a18.286 18.286 0 1 0 0-36.571z" fill="#0096E6" p-id="3826"></path></svg>',

            'javascript'     => '<svg t="1596638288993" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns='.
                                '"http://www.w3.org/2000/svg" p-id="4676" width="'.$w.'" height="'.$h.'"><path d="M676.29'.
                                '7143 0H145.609143C130.834286 0 118.857143 11.977143 118.857143 35.218286V1005.71'.
                                '4286c0 6.308571 11.977143 18.285714 26.752 18.285714h732.781714c14.774857 0 26.7'.
                                '52-11.977143 26.752-18.285714V237.312c0-12.726857-1.700571-16.822857-4.699428-19'.
                                '.84L687.670857 4.699429A16.164571 16.164571 0 0 0 676.297143 0z" fill="#E9E9E0" '.
                                'p-id="4677"></path><path d="M685.714286 2.761143V219.428571h216.667428z" fill="#'.
                                'D9D7CA" p-id="4678"></path><path d="M878.390857 1024H145.609143A26.752 26.752 0 '.
                                '0 1 118.857143 997.248V713.142857h786.285714v284.105143c0 14.774857-11.977143 26'.
                                '.752-26.752 26.752z" fill="#EEAF4B" p-id="4679"></path><path d="M475.812571 781.'.
                                '147429v143.506285c0 8.667429-1.590857 15.963429-4.754285 21.869715a39.332571 39.'.
                                '332571 0 0 1-12.745143 14.244571c-5.339429 3.584-11.465143 6.089143-18.377143 7.'.
                                '497143s-14.061714 2.121143-21.376 2.121143c-3.675429 0-7.972571-0.384-12.873143-'.
                                '1.133715s-10.002286-1.901714-15.250286-3.492571-10.294857-3.382857-15.122285-5.3'.
                                '76a55.259429 55.259429 0 0 1-12.251429-6.747429l12.745143-20.242285c1.664 1.152 '.
                                '4.041143 2.377143 7.131429 3.620571s6.454857 2.413714 10.130285 3.492572c3.65714'.
                                '3 1.097143 7.497143 2.029714 11.501715 2.870857s7.753143 1.243429 11.245714 1.24'.
                                '3428c8.813714 0 15.872-1.718857 21.12-5.12s8.027429-9.216 8.374857-17.371428v-14'.
                                '1.001143h30.500571zM625.078857 918.637714c0 6.656-1.371429 13.129143-4.132571 19'.
                                '.382857s-6.619429 11.757714-11.629715 16.493715-11.172571 8.539429-18.505142 11.'.
                                '373714a68.955429 68.955429 0 0 1-24.996572 4.242286c-4.004571 0-8.118857-0.21942'.
                                '9-12.379428-0.621715s-8.557714-1.133714-12.873143-2.121142c-4.333714-1.005714-8.'.
                                '466286-2.377143-12.379429-4.132572s-7.296-3.876571-10.130286-6.381714l5.248-21.5'.
                                '04c2.322286 1.334857 5.284571 2.633143 8.868572 3.876571s7.277714 2.413714 11.11'.
                                '7714 3.492572c3.821714 1.097143 7.661714 1.956571 11.501714 2.633143 3.821714 0.'.
                                '658286 7.405714 1.005714 10.752 1.005714 10.166857 0 17.956571-2.377143 23.36914'.
                                '3-7.131429s8.118857-11.794286 8.118857-21.12c0-5.668571-1.92-10.496-5.741714-14.'.
                                '500571-3.84-4.004571-8.630857-7.625143-14.372571-10.88s-11.958857-6.491429-18.63'.
                                '3143-9.746286a112.877714 112.877714 0 0 1-18.742857-11.501714 59.684571 59.68457'.
                                '1 0 0 1-14.500572-15.616c-3.84-5.997714-5.741714-13.494857-5.741714-22.491429 0-'.
                                '8.155429 1.499429-15.414857 4.498286-21.741714s7.04-11.721143 12.123428-16.128 1'.
                                '1.008-7.789714 17.755429-10.130286 13.878857-3.492571 21.376-3.492571c7.661714 0'.
                                ' 15.414857 0.713143 23.241143 2.121143 7.826286 1.408 14.153143 3.712 18.998857 '.
                                '6.875428a243.382857 243.382857 0 0 1-3.492572 7.131429l-3.748571 7.241143c-1.170'.
                                '286 2.249143-2.176 4.132571-2.998857 5.632a23.094857 23.094857 0 0 1-1.499429 2.'.
                                '505143c-1.005714-0.493714-2.121143-1.152-3.382857-1.993143s-3.053714-1.664-5.376'.
                                '-2.505143a38.528 38.528 0 0 0-9.252571-1.755429 87.424 87.424 0 0 0-14.756572 0.'.
                                '256c-3.346286 0.347429-6.491429 1.28-9.508571 2.870857s-5.686857 3.529143-8.0091'.
                                '43 5.869715a26.441143 26.441143 0 0 0-5.504 7.881143 20.114286 20.114286 0 0 0-1'.
                                '.993143 8.374857c0 6.656 1.901714 12.032 5.741714 16.128 3.821714 4.096 8.576 7.'.
                                '661714 14.244572 10.752 5.668571 3.090286 11.812571 6.089143 18.505143 8.996571 '.
                                '6.656 2.907429 12.873143 6.473143 18.633143 10.624s10.532571 9.380571 14.372571 '.
                                '15.616c3.876571 6.253714 5.814857 14.281143 5.814857 24.118857z" fill="#FFFFFF" '.
                                'p-id="4680"></path><path d="M356.571429 347.428571v-73.142857c0-10.075429 8.192-'.
                                '18.285714 18.285714-18.285714a18.285714 18.285714 0 1 0 0-36.571429c-30.244571 0'.
                                '-54.857143 24.612571-54.857143 54.857143v73.142857c0 20.169143-16.402286 36.5714'.
                                '29-36.571429 36.571429a18.285714 18.285714 0 1 0 0 36.571429c20.169143 0 36.5714'.
                                '29 16.402286 36.571429 36.571428v73.142857c0 30.244571 24.612571 54.857143 54.85'.
                                '7143 54.857143a18.285714 18.285714 0 1 0 0-36.571428c-10.093714 0-18.285714-8.21'.
                                '0286-18.285714-18.285715v-73.142857c0-21.942857-9.910857-41.435429-25.270858-54.'.
                                '857143a72.685714 72.685714 0 0 0 25.270858-54.857143z" fill="#EEAF4B" p-id="4681'.
                                '"></path><path d="M502.857143 338.285714m-27.428572 0a27.428571 27.428571 0 1 0 '.
                                '54.857143 0 27.428571 27.428571 0 1 0-54.857143 0Z" fill="#EEAF4B" p-id="4682"><'.
                                '/path><path d="M722.285714 384c-20.169143 0-36.571429-16.402286-36.571428-36.571'.
                                '429v-73.142857c0-30.244571-24.612571-54.857143-54.857143-54.857143a18.285714 18.'.
                                '285714 0 1 0 0 36.571429c10.093714 0 18.285714 8.210286 18.285714 18.285714v73.1'.
                                '42857c0 21.942857 9.910857 41.435429 25.270857 54.857143a72.685714 72.685714 0 0'.
                                ' 0-25.270857 54.857143v73.142857c0 10.075429-8.192 18.285714-18.285714 18.285715'.
                                'a18.285714 18.285714 0 1 0 0 36.571428c30.244571 0 54.857143-24.612571 54.857143'.
                                '-54.857143v-73.142857c0-20.169143 16.402286-36.571429 36.571428-36.571428a18.285'.
                                '714 18.285714 0 1 0 0-36.571429zM502.857143 438.857143a18.285714 18.285714 0 0 0'.
                                '-18.285714 18.285714v54.857143a18.285714 18.285714 0 1 0 36.571428 0v-54.857143a'.
                                '18.285714 18.285714 0 0 0-18.285714-18.285714z" fill="#EEAF4B" p-id="4683"></pat'.
                                'h></svg>',

            'json'           => '<svg t="1596639891757" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns='.
                                '"http://www.w3.org/2000/svg" p-id="5687" width="'.$w.'" height="'.$h.'"><path d="M902.4 '.
                                '926.72c0 26.88-21.76 48.64-48.64 48.64H170.24c-26.88 0-48.64-21.76-48.64-48.64V4'.
                                '8.64c0-26.88 21.76-48.64 48.64-48.64H588.8c12.8 0 25.6 5.12 34.56 14.08l263.68 2'.
                                '63.68c8.96 8.96 14.08 21.76 14.08 34.56 1.28 0 1.28 614.4 1.28 614.4z" fill="#EB'.
                                'ECF0" p-id="5688"></path><path d="M902.4 926.72v48.64c0 26.88-21.76 48.64-48.64 '.
                                '48.64H170.24c-26.88 0-48.64-21.76-48.64-48.64v-48.64c0 26.88 21.76 48.64 48.64 4'.
                                '8.64h682.24c28.16 0 49.92-21.76 49.92-48.64z" fill="#C1C7D0" p-id="5689"></path>'.
                                '<path d="M24.32 536.32h975.36v243.2c0 26.88-21.76 48.64-48.64 48.64H72.96c-26.88'.
                                ' 0-48.64-21.76-48.64-48.64v-243.2z" fill="#FFAB00" p-id="5690"></path><path d="M'.
                                '121.6 536.32v-97.28l-97.28 97.28h97.28z m780.8 0l1.28-97.28 97.28 97.28h-98.56z"'.
                                ' fill="#FF8B00" p-id="5691"></path><path d="M902.4 312.32v7.68H637.44c-26.88 0-4'.
                                '8.64-21.76-48.64-48.64V0c12.8 0 25.6 5.12 34.56 14.08l263.68 263.68c10.24 8.96 1'.
                                '5.36 21.76 15.36 34.56z" fill="#C1C7D0" p-id="5692"></path><path d="M186.88 784.'.
                                '64c-29.44 0-47.36-12.8-60.16-30.72l21.76-21.76c11.52 14.08 21.76 21.76 38.4 21.7'.
                                '6 17.92 0 29.44-11.52 29.44-37.12v-122.88h33.28v124.16c1.28 44.8-25.6 66.56-62.7'.
                                '2 66.56zM368.64 672c39.68 10.24 60.16 24.32 60.16 55.04 0 35.84-28.16 56.32-66.5'.
                                '6 56.32-28.16 0-56.32-10.24-78.08-30.72l20.48-23.04c17.92 15.36 35.84 24.32 58.8'.
                                '8 24.32 20.48 0 33.28-8.96 33.28-24.32 0-14.08-7.68-20.48-42.24-29.44-39.68-10.2'.
                                '4-62.72-21.76-62.72-56.32 0-33.28 26.88-55.04 64-55.04 26.88 0 48.64 8.96 67.84 '.
                                '23.04l-17.92 25.6c-16.64-12.8-33.28-19.2-51.2-19.2-19.2 0-30.72 10.24-30.72 23.0'.
                                '4 0 16.64 8.96 23.04 44.8 30.72zM558.08 784.64c-57.6 0-98.56-43.52-98.56-97.28s4'.
                                '0.96-97.28 98.56-97.28 98.56 43.52 98.56 97.28-40.96 97.28-98.56 97.28z m0-163.8'.
                                '4c-37.12 0-64 29.44-64 66.56 0 37.12 26.88 66.56 64 66.56s64-29.44 64-66.56c0-35'.
                                '.84-26.88-66.56-64-66.56zM828.16 593.92h32v188.16H832l-102.4-134.4v134.4h-32V593'.
                                '.92h30.72l101.12 130.56V593.92z" fill="#FFFFFF" p-id="5693"></path></svg>',

            'chm'            => '<svg t="1596664458725" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns='.
                                '"http://www.w3.org/2000/svg" p-id="6993" width="20" height="'.$h.'"><path d="M142.33'.
                                '6 167.936h624.64v798.72h-624.64z" fill="#F2DBB6" p-id="6994"></path><path d="M89'.
                                '.088 89.088h605.184v78.848H89.088zM482.304 723.968a241.664 241.664 0 1 0 483.328'.
                                ' 0 241.664 241.664 0 1 0-483.328 0z" fill="#FFF2E3" p-id="6995"></path><path d="'.
                                'M995.328 723.968c0-118.784-75.776-219.136-181.248-256V149.504h-60.416V89.088h60.'.
                                '416V28.672H118.784c-2.048 0-21.504 0-44.032 10.24-22.528 10.24-48.128 38.912-47.'.
                                '104 79.872v817.152c0 60.416 60.416 60.416 60.416 60.416h637.952c149.504-2.048 26'.
                                '9.312-122.88 269.312-272.384zM114.688 148.48c-5.12-1.024-13.312-3.072-17.408-7.1'.
                                '68-4.096-4.096-8.192-7.168-8.192-22.528 1.024-19.456 6.144-20.48 13.312-25.6 4.0'.
                                '96-2.048 9.216-3.072 12.288-4.096 3.072-1.024 4.096 0 4.096-1.024h574.464v60.416'.
                                'H118.784c0 1.024-1.024 1.024-4.096 0z m34.816 786.432V209.92h605.184v243.712c-10'.
                                '.24-1.024-20.48-2.048-30.72-2.048-64.512 0-123.904 22.528-171.008 60.416H209.92v'.
                                '60.416h287.744c-12.288 18.432-22.528 38.912-29.696 60.416H209.92v60.416h243.712c'.
                                '-1.024 10.24-2.048 20.48-2.048 30.72 0 86.016 39.936 161.792 101.376 211.968H149'.
                                '.504z m574.464 0C607.232 934.912 512 840.704 512 723.968 512 607.232 607.232 512'.
                                ' 723.968 512c116.736 0 210.944 95.232 211.968 211.968-1.024 116.736-95.232 210.9'.
                                '44-211.968 210.944z" fill="#CC9933" p-id="6996"></path><path d="M209.92 391.168h'.
                                '483.328v60.416H209.92z m475.136 377.856c0-60.416 68.608-69.632 68.608-112.64 0-1'.
                                '9.456-18.432-34.816-39.936-34.816-23.552 0-45.056 18.432-45.056 18.432l-29.696-3'.
                                '5.84s29.696-30.72 77.824-30.72c47.104 0 90.112 29.696 90.112 77.824 0 68.608-72.'.
                                '704 76.8-72.704 122.88v16.384h-51.2v-20.48h2.048z m0 57.344h51.2v49.152h-51.2v-4'.
                                '9.152z" fill="#CC9933" p-id="6997"></path></svg>',

            'execute'        => '<svg t="1596668661963" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns='.
                                '"http://www.w3.org/2000/svg" p-id="5070" width="20" height="'.$h.'"><path d="M112 16'.
                                'h736v992H112z" fill="#C5BCDD" p-id="5071"></path><path d="M480 576a128 128 0 1 0'.
                                ' 0 256 128 128 0 0 0 0-256z m0 192a64 64 0 1 1 0-128 64 64 0 0 1 0 128z" fill="#'.
                                'E6F6FD" p-id="5072"></path><path d="M304 736h36.016a144.208 144.208 0 0 0 18.576'.
                                ' 44.16l-25.664 25.664a15.984 15.984 0 0 0 0 22.624l22.624 22.624a15.984 15.984 0'.
                                ' 0 0 22.624 0l25.536-25.536a142.288 142.288 0 0 0 44.304 18.768V880a16 16 0 0 0 '.
                                '16 16h32a16 16 0 0 0 16-16v-35.68a142.288 142.288 0 0 0 44.304-18.768l25.536 25.'.
                                '536a15.984 15.984 0 0 0 22.624 0l22.624-22.624a15.984 15.984 0 0 0 0-22.624l-25.'.
                                '664-25.664a143.824 143.824 0 0 0 18.576-44.16H656a16 16 0 0 0 16-16v-32a16 16 0 '.
                                '0 0-16-16h-36.016a144.208 144.208 0 0 0-18.576-44.16l25.664-25.664a15.984 15.984'.
                                ' 0 0 0 0-22.624l-22.624-22.624a15.984 15.984 0 0 0-22.624 0l-25.536 25.536a142.2'.
                                '88 142.288 0 0 0-44.304-18.768V528a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v35.68'.
                                'a142.288 142.288 0 0 0-44.304 18.768l-25.536-25.536a15.984 15.984 0 0 0-22.624 0'.
                                'l-22.624 22.624a15.984 15.984 0 0 0 0 22.624l25.664 25.664a143.824 143.824 0 0 0'.
                                '-18.576 44.16H304a16 16 0 0 0-16 16v32A16 16 0 0 0 304 736z m176-144a112 112 0 1'.
                                ' 1 0 224 112 112 0 0 1 0-224z m0 192c44.192 0 80-35.808 80-80s-35.808-80-80-80-8'.
                                '0 35.808-80 80 35.808 80 80 80z m0-128a48 48 0 1 1 0 96 48 48 0 0 1 0-96zM896 12'.
                                '8h-32V32a32 32 0 0 0-32-32H128a32 32 0 0 0-32 32v960a32 32 0 0 0 32 32h704a32 32'.
                                ' 0 0 0 32-32V416h32a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32z m-64 0H448a32 32 0 '.
                                '0 0-32 32v224a32 32 0 0 0 32 32h384v576H128V32h704v96z" fill="#2B3139" p-id="507'.
                                '3"></path><path d="M448 160h448v224H448z" fill="#FFFFFF" p-id="5074"></path><pat'.
                                'h d="M503.872 216.496h94.512v29.264H539.04v14.224h53.888v27.184H539.04v14.24h61.'.
                                '072v29.264h-96.256v-114.176zM646.736 269.904l-37.584-53.408h41.248l17.28 31.008 '.
                                '16.944-31.008h39.024l-36.624 53.712 40.784 60.448H685.44l-19.52-34.064-20.144 34'.
                                '.064h-40.32l41.28-60.752zM735.056 216.496h94.512v29.264H770.24v14.224h53.888v27.'.
                                '184H770.24v14.24h61.088v29.264H735.04v-114.176z" fill="#2B3139" p-id="5075"></pa'.
                                'th></svg>',

            'xml'            => '<svg t="1596787868468" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns='.
                                '"http://www.w3.org/2000/svg" p-id="2361" width="'.$w.'" height="'.$h.'"><path d="M676.29'.
                                '7143 0H145.609143C130.834286 0 118.857143 11.977143 118.857143 35.218286V1005.71'.
                                '4286c0 6.308571 11.977143 18.285714 26.752 18.285714h732.781714c14.774857 0 26.7'.
                                '52-11.977143 26.752-18.285714V237.312c0-12.726857-1.700571-16.822857-4.699428-19'.
                                '.84L687.670857 4.699429A16.164571 16.164571 0 0 0 676.297143 0z" fill="#E9E9E0" '.
                                'p-id="2362"></path><path d="M685.714286 2.761143V219.428571h216.667428z" fill="#'.
                                'D9D7CA" p-id="2363"></path><path d="M878.390857 1024H145.609143A26.752 26.752 0 '.
                                '0 1 118.857143 997.248V713.142857h786.285714v284.105143c0 14.774857-11.977143 26'.
                                '.752-26.752 26.752z" fill="#F29C1F" p-id="2364"></path><path d="M354.358857 879.'.
                                '634286L401.115429 969.142857h-34.742858l-29.257142-69.504h-2.505143L303.104 969.'.
                                '142857h-34.742857l46.756571-89.508571-49.755428-94.756572h34.249143l32.493714 75'.
                                '.008h2.505143l35.254857-75.008H404.114286l-49.755429 94.756572zM585.106286 784.8'.
                                '96h30.500571V969.142857h-30.500571v-126.756571l-41.252572 102.491428h-26.496l-41'.
                                '.508571-102.491428V969.142857h-30.500572V784.896h30.500572l54.747428 126.006857 '.
                                '54.509715-126.006857zM692.352 784.896v161.499429h84.754286V969.142857h-115.25485'.
                                '7V784.896h30.500571z" fill="#FFFFFF" p-id="2365"></path><path d="M283.428571 438'.
                                '.857143a18.267429 18.267429 0 0 1-12.928-31.213714l109.714286-109.714286a18.2674'.
                                '29 18.267429 0 1 1 25.856 25.856l-109.714286 109.714286A18.230857 18.230857 0 0 '.
                                '1 283.428571 438.857143z" fill="#F29C1F" p-id="2366"></path><path d="M393.142857'.
                                ' 548.571429a18.230857 18.230857 0 0 1-12.928-5.357715l-109.714286-109.714285a18.'.
                                '267429 18.267429 0 1 1 25.856-25.856l109.714286 109.714285A18.267429 18.267429 0'.
                                ' 0 1 393.142857 548.571429zM612.571429 548.571429a18.267429 18.267429 0 0 1-12.9'.
                                '28-31.213715l109.714285-109.714285a18.267429 18.267429 0 1 1 25.856 25.856l-109.'.
                                '714285 109.714285A18.230857 18.230857 0 0 1 612.571429 548.571429z" fill="#F29C1'.
                                'F" p-id="2367"></path><path d="M722.285714 438.857143a18.230857 18.230857 0 0 1-'.
                                '12.928-5.357714l-109.714285-109.714286a18.267429 18.267429 0 1 1 25.856-25.856l1'.
                                '09.714285 109.714286A18.267429 18.267429 0 0 1 722.285714 438.857143zM448 585.14'.
                                '2857a18.285714 18.285714 0 0 1-17.243429-24.393143l109.714286-310.857143a18.2857'.
                                '14 18.285714 0 1 1 34.486857 12.178286l-109.714285 310.857143A18.285714 18.28571'.
                                '4 0 0 1 448 585.142857z" fill="#F29C1F" p-id="2368"></path></svg>',
                                            
            'other'          => '<svg t="1596637658308" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns='.
                                '"http://www.w3.org/2000/svg" p-id="19380" width="'.$w.'" height="'.$h.'"><path d="M153.6'.
                                ' 0h562.7392L972.8 257.0752V921.6a102.4 102.4 0 0 1-102.4 102.4H153.6a102.4 102.4'.
                                ' 0 0 1-102.4-102.4V102.4a102.4 102.4 0 0 1 102.4-102.4z m370.688 667.136v-8.704c'.
                                '0-12.8 2.56-24.064 8.192-34.304 4.608-9.216 11.776-17.92 20.992-26.112 24.576-20'.
                                '.992 38.912-34.304 43.52-39.936 12.288-16.384 18.944-37.376 18.944-62.464 0-30.7'.
                                '2-10.24-55.296-30.208-73.216-20.48-18.432-47.104-27.136-80.384-27.136-37.376 0-6'.
                                '7.072 10.752-88.576 32.768-22.016 21.504-32.768 50.688-32.768 88.064h54.272c0-22'.
                                '.528 4.608-40.448 13.824-52.736 10.24-14.336 27.136-21.504 50.176-21.504 18.432 '.
                                '0 32.768 5.12 43.008 15.36 9.728 10.24 14.848 24.064 14.848 41.984 0 13.312-4.60'.
                                '8 25.6-13.824 37.376l-8.704 9.728c-31.744 28.16-51.2 49.152-58.368 63.488-6.656 '.
                                '13.312-9.728 29.696-9.728 48.64v8.704h54.784zM496.64 768c10.24 0 19.456-3.584 27'.
                                '.136-10.24 7.168-7.168 10.752-15.872 10.752-26.624 0-10.752-3.584-19.456-10.752-'.
                                '26.112a36.6592 36.6592 0 0 0-27.136-10.24c-10.752 0-19.456 3.072-26.112 10.24-7.'.
                                '68 6.656-11.264 15.36-11.264 26.112 0 10.24 3.584 18.944 11.264 26.112 6.656 7.1'.
                                '68 15.36 10.752 26.112 10.752z" fill="#5F6366" p-id="19381"></path><path d="M772'.
                                '.9664 256a56.5248 56.5248 0 0 1-56.064-56.8832L716.3904 0 972.8 257.0752 772.966'.
                                '4 256z" fill="#B0B1B3" p-id="19382"></path></svg>',
                                
            'person'         => '<svg t="1597132818455" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns='.
                                '"http://www.w3.org/2000/svg" p-id="4826" width="'.$pw.'" height="'.$ph.'"><path d="M695.'.
                                '04 541.184c-0.128 0.256-0.384 0.384-0.512 0.512l-13.44 12.416c-13.568 12.032-28.'.
                                '416 23.424-44.544 34.176-20.096 14.08-39.552 27.008-58.24 38.912-10.88 6.912-21.'.
                                '632 13.44-32.128 19.456-118.272 69.376-207.488 91.648-273.664 90.496-8.576-0.128'.
                                '-16.896-0.64-24.832-1.664-16.384-1.792-31.104-5.12-44.416-9.472-20.992-6.912-38.'.
                                '144-16.256-52.096-26.368-50.304-36.096-64-105.984-28.032-156.416 49.024-69.12 15'.
                                '3.472-87.168 153.472-87.168 19.84-12.544 31.616-26.624 38.144-40.96 11.264-24.96'.
                                ' 6.272-50.304-0.768-68.352-6.016-15.744-13.44-25.856-12.288-24.576-65.536-194.56'.
                                ' 91.52-263.808 191.744-287.872 118.016-28.288 241.28 32 286.208 144.64 44.032 11'.
                                '0.08 24.576 256-84.608 362.24z" fill="#373939" p-id="4827"></path><path d="M694.'.
                                '784 541.312l-0.256 0.384-13.44 12.416c-13.568 12.032-28.416 23.424-44.544 34.176'.
                                '-20.096 14.08-39.552 27.008-58.24 38.912 2.816 5.248 6.016 9.728 9.088 13.312l-2'.
                                '7.776 25.6-13.312-19.584-40.192-59.136 55.424-118.272c0.256 3.968 19.456 100.864'.
                                ' 41.344 105.984 23.936 5.504 87.168-30.72 91.904-33.792zM409.088 685.568c-40.704'.
                                ' 39.552-93.056 50.56-136.576 51.456-26.624-0.384-49.536-4.608-69.12-11.008 194.8'.
                                '16-20.48 205.696-284.16 205.696-284.16 97.152 142.08 0 243.712 0 243.712z" fill='.
                                '"#21221E" p-id="4828"></path><path d="M873.728 745.344l-2.816 110.336c-1.536 61.'.
                                '952-53.376 110.72-115.2 108.544l-513.024-18.048c-57.216-2.048-101.376-50.816-97.'.
                                '536-107.904l5.504-83.2c11.136-22.4 57.984-15.616 57.984-15.616 13.952-0.64 27.00'.
                                '8-2.048 39.168-3.968C473.6 699.136 418.432 457.088 418.432 457.088c-80.384-4.48-'.
                                '102.656-39.04-102.656-39.04-0.384-1.024-0.64-1.92-0.896-2.944-6.656-21.632-6.144'.
                                '-44.8-0.768-68.352C338.688 239.616 464.128 126.72 464.128 126.72c-2.176 15.616 1'.
                                '4.592 90.368 78.08 144s30.08 103.808 30.08 103.808l16-0.896c2.688-0.128 5.376-0.'.
                                '768 7.936-1.408 15.488-4.224 25.216 0 31.104 6.528 12.928 14.208 11.52 36.992-2.'.
                                '816 49.664-20.992 18.56-61.184 19.712-61.184 19.712-0.768 7.168-1.536 14.208-2.0'.
                                '48 20.992-7.04 85.632 3.072 132.48 16.896 157.952 2.816 5.248 6.016 9.728 9.088 '.
                                '13.312 16.128 18.816 33.152 16.896 34.176 16.384 226.176 14.848 252.288 88.576 2'.
                                '52.288 88.576z" fill="#F2B5B0" p-id="4829"></path><path d="M383.666622 243.92806'.
                                '2a9.984 19.2 39.635 1 0 24.49515-29.572751 9.984 19.2 39.635 1 0-24.49515 29.572'.
                                '751Z" fill="#373939" p-id="4830"></path><path d="M443.727717 302.066103a9.984 19'.
                                '.2 39.635 1 0 24.495151-29.572751 9.984 19.2 39.635 1 0-24.495151 29.572751Z" fi'.
                                'll="#373939" p-id="4831"></path><path d="M418.432 256.256l-59.648 27.136c-4.096 '.
                                '1.92-6.016 6.4-4.224 10.368l4.864 10.624c4.736 10.368 19.968 12.288 27.52 3.328l'.
                                '37.632-44.416c3.2-3.968-1.408-9.216-6.144-7.04z" fill="#BC6B68" p-id="4832"></pa'.
                                'th><path d="M344.448 323.84s18.432 40.192 49.024 39.296c0 0.128-78.336 31.872-49'.
                                '.024-39.296" fill="#E62B3C" p-id="4833"></path><path d="M512.896 289.408c-1.408 '.
                                '0-2.816-1.024-3.2-2.432-9.216-33.28-46.592-36.352-46.976-36.352-1.792-0.128-3.2-'.
                                '1.792-3.072-3.584 0.128-1.792 1.664-3.2 3.584-3.072 0.384 0 42.496 3.456 52.992 '.
                                '41.216 0.512 1.792-0.512 3.584-2.304 4.096-0.384 0-0.64 0.128-1.024 0.128zM430.0'.
                                '8 214.912c-1.408 0-2.816-1.024-3.2-2.432-6.272-22.144-31.488-24.192-32.64-24.32-'.
                                '1.792-0.128-3.2-1.792-3.072-3.584 0.128-1.792 1.792-3.2 3.584-3.072 1.28 0.128 3'.
                                '0.976 2.432 38.528 29.184 0.512 1.792-0.512 3.584-2.304 4.096-0.256 0.128-0.64 0'.
                                '.128-0.896 0.128z" fill="#363838" p-id="4834"></path><path d="M418.432 457.088s8'.
                                '7.552 4.352 114.816-22.912c0 0-40.32 80.768-108.8 87.936l-6.016-65.024z" fill="#'.
                                'D89395" p-id="4835"></path><path d="M562.432 441.728m-20.48 0a20.48 20.48 0 1 0 '.
                                '40.96 0 20.48 20.48 0 1 0-40.96 0Z" fill="#FFFFFF" p-id="4836"></path><path d="M'.
                                '583.04 385.28s47.104-3.328 38.528 21.76c-8.704 25.088-27.008 17.536-27.008 17.53'.
                                '6s45.184-32.384-10.368-38.272" fill="#D89395" p-id="4837"></path><path d="M221.4'.
                                '4 737.92s237.952 176.384 636.8-0.896l1.664-1.28c5.248-3.968 12.8-1.152 13.952 5.'.
                                '248 5.12 28.16 15.104 96.128 11.264 173.568-4.096 82.432-492.928 59.008-680.96 4'.
                                '6.976-41.6-2.688-74.752-35.456-77.696-76.8l-5.504-77.312s7.296-88.832 100.48-69.'.
                                '504z" fill="#F5B335" p-id="4838"></path><path d="M454.4 785.536s75.52 1.28 75.64'.
                                '8 29.184c0 0 15.36-33.664 72.832-29.184 0 0-61.696-15.744-71.168 12.928-0.128 0-'.
                                '7.04-16.256-77.312-12.928z" fill="#D89395" p-id="4839"></path></svg>'
        );
    }
    
    public function __toString(){
        $this->request();
        $this->dirAfter();
        $this->dirFront();
        
        $ret = $this->process(). 
                   $this->showDirs().
                   $this->showFiles();
                   
        return $ret;
    }
    
     /*
      after 变量携带的数据是 $this->dirDataStructure 属性数组的下标，用户点击页面顶部目录部分，
      由 after 截取该数组
    */
    private function dirAfter(){
        if(filter_input(INPUT_GET, "after", FILTER_VALIDATE_INT)){
            if(isset($_GET["after"])){
                $this->dirDataStructure = array_slice($this->dirDataStructure, 0, $_GET["after"]);
                $_SESSION["dir"] = $this->dirDataStructure;
            }
        }
    }
    
    /*
      front 变量携带的数据是目录名称，用户点击页面中部的目录图标，该变量向
      $this->dirDataStructure 属性数组追加目录名称
    */
    private function dirFront(){
        if(!isset($_GET["after"])){
            if(!isset($_GET["front"])){
                
                //如果 url 上没有变量 after 和 front 则显示当前程序所在目录
                $this->dirDataStructure = explode('/' , $this->startDir);
            }else{
                if(filter_input(INPUT_GET, "front", FILTER_SANITIZE_STRING)){
                    
                    //检查页面是否有刷新，刷新时数据不写入数组和 session
                    $pageWasRefreshed = isset($_SERVER['HTTP_CACHE_CONTROL']) && ($_SERVER['HTTP_CACHE_CONTROL'] === 'max-age=0');
                    if(!$pageWasRefreshed ) {
                        $dirstr = implode('/', $this->dirDataStructure) . '/';
                        
                        //检查目录是否成在，成在时才写入数组和 session
                        if(file_exists($dirstr . $_GET["front"])){
                            array_push($this->dirDataStructure, $_GET["front"]);
                            $_SESSION["dir"] = $this->dirDataStructure;
                        }
                    }
                }
            }
        }
    }
    
    //文件写入的方法部分
    private function request(){
        if(isset($_POST["edit"]) && isset($_POST["edit2url"])){
                
            /*
              文件覆盖写入
                              
              在文件写入时获得一个独占锁。
              对尖括号 <> 进行转义。
            */
            file_put_contents(addcslashes($_POST['edit2url'], '<>'), addcslashes($_POST['edit'], '<>'), LOCK_EX);

            //返回到前端 web 存储的 url 地址
            echo '<script>location.href = sessionStorage.urlname;</script>';
        }
    }
    
    private function process(){
        $i = 1;
        foreach($this->dirDataStructure as $dirName){
            $param = preg_replace('/&.+$/', '', $_SERVER['QUERY_STRING']);
            $strToPage .= "<a href='" . htmlspecialchars($_SERVER["PHP_SELF"]) . '?' . $param . "&after={$i}'>" . $dirName . '/</a>';
            $strToGlob .= $dirName . '/';
            $i++;
        }

        $title = <<<EOF
            <div class="alert alert-success" style="word-wrap:break-word">
                <strong>选择目录：</strong> {$strToPage}
            </div>
EOF;
//上面一行必须顶到左边；并且不能有注释；
//不能是文件最后一行，如果是最后一行，请再换一行空白行。

        /*
            这里修改 * 号为 *.txt、*.php 等，可查看指定后缀名的文件，
            也可以做成文件搜索功能。
        */
        $this->dirArr = glob($strToGlob . '*');

        //数组排序
        sort($this->dirArr);
        
        return $title;
    }
    
    //输出目录部分
    private function showDirs(){
        $shows = '';
        foreach($this->dirArr as $value){
            if(is_dir($value) && file_exists($value)){
                //显示目录磁盘大小
                $ds = 0;
                $ds = $this->dirSize($value);
                
                if($ds/1024/1024/1024 >= 1){
                    $dirSize = round($ds/1024/1024/1024, 2) . 'G';
                }elseif($ds/1024/1024 >= 1){
                    $dirSize = round($ds/1024/1024, 2) . 'M';
                }elseif($ds/1024 >= 1){
                    $dirSize = round($ds/1024, 2) . 'K';
                }else{
                    $dirSize = round($ds, 2) . 'B';
                }
                //用 svg 显示图标
                $param = preg_replace('/&.+$/', '', $_SERVER['QUERY_STRING']);
                $show = '<a href="' . htmlspecialchars($_SERVER["PHP_SELF"]) . '?' . $param . '&front=' . basename($value) . '">' . $this->icon['dir'];
                $show .=  '<span class="file-name">&nbsp;' . basename($value) . '</span>';
                $show .= '</a><span class="file-size">' . $dirSize . '</span><br>';
                $shows .= $show;
            }
        }
        return $shows;
    }
    
    //输出文件部分
    private function showFiles(){
        $shows = '';
        foreach($this->dirArr as $value){
            if(is_file($value)){
                //获取转小写后的文件后缀名
                $extention = strtolower(pathinfo($value, PATHINFO_EXTENSION));
                $fileName = basename($value);
                
                //显示文件大小
                $fs = 0;
                $fs = filesize($value);
                if($fs/1024/1024/1024 >= 1){
                    $fileSize = round($fs/1024/1024/1024, 2) . 'G';
                }elseif($fs/1024/1024 >= 1){
                    $fileSize = round($fs/1024/1024, 2) . 'M';
                }elseif($fs/1024 >= 1){
                    $fileSize = round($fs/1024, 2) . 'K';
                }else{
                    $fileSize = round($fs, 2) . 'B';
                }
                
                //如果文件名太长，截取文件名
                //注意 $fileName 只能用于前端显示，不能用于后端的文件路径访问
                if(mb_strlen(reset(explode('.', $fileName))) > 18){
                    $fileName = reset(explode('.', $fileName));
                    $fileName = substr($fileName, 0, 18) . '···.' . $extention;
                }
                
                //根据后缀名显示相关图标
                switch($extention){
                    
                    //图片文件的图标
                    case 'bmp':
                    case 'wbmp':
                    case 'webp':
                    case 'jpg':
                    case 'jpeg':
                    case 'png':
                    case 'gif':
                    case 'ico':
                    case 'xbm':
                    case 'xpm':
                        $show = $this->icon['picture'];
                        
                        /*
                            支持文件打开的方法是加了个 onclick 事件函数 pictureFunc(绝对路径)
                            第一个参数 是图片的绝对路径
                            在前端用 <img src="./image.php?url=绝对路径" /> 转相对路径访问
                        */
                        $show .=  '<span class="file-name" onclick="pictureFunc(\'' . urlencode($value) . '\')">&nbsp;' . $fileName . '</span>';
                        $show .= '<span class="file-size">' . $fileSize . '</span>';
                        $show .=  '<br>';
                        $shows .= $show;
                        break;
                        
                    //视频文件的图标
                    case 'avi':
                    case 'wmv':
                    case 'mpeg':
                    case 'mpg':
                    case 'mov':
                    case 'rm':
                    case 'ram':
                    case 'swf':
                    case 'flv':
                    case 'mp4':   // h5 支持的格式
                    case 'webm':  // h5 支持的格式
                        $show = $this->icon['video'];
                        
                        /*
                            支持文件打开的方法是加了个 onclick 事件函数 videoFunc(相对路径, 文件后缀名)
                            第一个参数 是网站根目下的相对路径，
                                       注意：网站根目录外的文件无法访问
                            第二个参数 是后缀名
                        */
                        $show .=  '<span class="file-name" onclick="videoFunc(\'' . $this->absolute2relative($value) . '\', \'' . trim($extention) . ' \')">&nbsp;' . $fileName . '</span>';
                        $show .= '<span class="file-size">' . $fileSize . '</span>';
                        $show .=  '<br>';
                        $shows .= $show;
                        break;
                        
                    // 音乐文件的图标
                    case 'mp1':
                    case 'mp2':
                    case 'wma':
                    case 'wmv':
                    case 'rm':
                    case 'rmvb':
                    case 'aac':
                    case 'mid':
                    case 'vqf':
                    case 'avi':
                    case 'mpg':
                    case 'mpeg':
                    case 'cda':
                    case 'mp3':   // h5 支持的格式
                    case 'wav':   // h5 支持的格式
                    case 'ogg':   // h5 支持的格式
                        $show = $this->icon['music'];
                        
                        /*
                            支持文件打开的方法是加了个 onclick 事件函数 musicFunc(相对路径, 文件后缀名)
                            第一个参数 是网站根目下的相对路径，
                                       注意：网站根目录外的文件无法访问
                            第二个参数 是后缀名
                        */
                        $show .=  '<span class="file-name" onclick="musicFunc(\'' . $this->absolute2relative($value) . '\', \'' . trim($extention) . ' \')">&nbsp;' . $fileName . '</span>';
                        $show .= '<span class="file-size">' . $fileSize . '</span>';
                        $show .=  '<br>';
                        $shows .= $show;
                        break;
                        
                    //文本文件的图标
                    case 'txt':
                    case 'log':
                    case 'sql':
                        $show = $this->icon['text'];
                        $show .=  '<span class="file-name" ';
                        
                        /*
                            支持文件打开的方法是加了个 onclick 事件函数 textFunc(文件内容, 绝对路径)
                            第一个参数 是 url 加密后的文件数据内容
                                       需要注意的是：php url 加密后，用 js url 解密，空格会变成 + 号，
                                       与正常的 + 号无法区分开来；
                                       处理方法写在前端的 js 处理程序的注释部分
                            第二个参数 是文件绝对路径
                        */
                        $show .= 'onclick="textFunc(\'' . urlencode(file_get_contents($value)) . '\', \'' . $value . '\')">&nbsp;' . $fileName . '</span>';
                        $show .= '<span class="file-size">' . $fileSize . '</span>';
                        $show .=  '<br>';
                        $shows .= $show;
                        break;
                        
                    //配置文件的图标
                    case 'conf':
                    case 'ini':
                    case 'sh':
                        $show = $this->icon['configuration'];
                        
                        /*
                            支持文件打开的方法是加了个 onclick 事件
                            
                            调用的是文本文件事件函数 textFunc(文件内容, 绝对路径)
                            第一个参数 是 url 加密后的文件数据内容
                            第二个参数 是文件绝对路径
                        */
                        $show .=  '<span class="file-name" onclick="textFunc(\'' . urlencode(file_get_contents($value)) . '\', \'' . $value . '\')">&nbsp;' . $fileName . '</span>';
                        $show .= '<span class="file-size">' . $fileSize . '</span>';
                        $show .=  '<br>';
                        $shows .= $show;
                        break;
                        
                    //html文件的图标
                    case 'html':
                    case 'htm':
                    case 'shtml':
                    case 'shtm':
                        $show = $this->icon['html'];
                        
                        /*
                            未识别文件 onclick 事件函数 otherFunc()
                        */
                        $show .=  '<span class="file-name" onclick="otherFunc()">&nbsp;' . $fileName . '</span>';
                        $show .= '<span class="file-size">' . $fileSize . '</span>';
                        $show .=  '<br>';
                        $shows .= $show;
                        break;
                        
                    //代码文件的图标
                    case 'php':
                    case 'jsp':
                    case 'asp':
                    case 'aspx':
                    case 'cs':
                    case 'cpp':
                    case 'h':
                    case 'c':
                        $show = $this->icon['code'];
                        
                        /*
                            未识别文件 onclick 事件函数 otherFunc()
                        */
                        $show .=  '<span class="file-name" onclick="otherFunc()">&nbsp;' . $fileName . '</span>';
                        $show .= '<span class="file-size">' . $fileSize . '</span>';
                        $show .=  '<br>';
                        $shows .= $show;
                        break;
                        
                    //动态链接库的图标
                    case 'dll':
                    case 'so':
                        $show = $this->icon['dll'];
                        
                        /*
                            未识别文件 onclick 事件函数 otherFunc()
                        */
                        $show .=  '<span class="file-name" onclick="otherFunc()">&nbsp;' . $fileName . '</span>';
                        $show .= '<span class="file-size">' . $fileSize . '</span>';
                        $show .=  '<br>';
                        $shows .= $show;
                        break;
                        
                    //lib 静态链接库的图标
                    case 'lib':
                    case 'a':
                        $show = $this->icon['library'];
                        
                        /*
                            未识别文件 onclick 事件函数 otherFunc()
                        */
                        $show .=  '<span class="file-name" onclick="otherFunc()">&nbsp;' . $fileName . '</span>';
                        $show .= '<span class="file-size">' . $fileSize . '</span>';
                        $show .=  '<br>';
                        $shows .= $show;
                        break;
                        
                    //压缩文件的图标
                    case 'zip':
                    case 'rar':
                    case '7z':
                    case 'cab':
                    case 'arj':
                    case 'lzh':
                    case 'ace':
                    case 'tar':
                    case 'gz':
                    case 'tar.gz':
                    case 'tar.bz2':
                    case 'uue':
                    case 'bz2':
                    case 'jar':
                    case 'iso':
                    case 'z':
                        $show = $this->icon['compressed'];
                        
                        /*
                            未识别文件 onclick 事件函数 otherFunc()
                        */
                        $show .=  '<span class="file-name" onclick="otherFunc()">&nbsp;' . $fileName . '</span>';
                        $show .= '<span class="file-size">' . $fileSize . '</span>';
                        $show .=  '<br>';
                        $shows .= $show;
                        break;
                        
                    //pdf 文件的图标
                    case 'pdf':
                        $show = $this->icon['pdf'];
                        
                        /*
                            未识别文件 onclick 事件函数 otherFunc()
                        */
                        $show .=  '<span class="file-name" onclick="otherFunc()">&nbsp;' . $fileName . '</span>';
                        $show .= '<span class="file-size">' . $fileSize . '</span>';
                        $show .=  '<br>';
                        $shows .= $show;
                        break;
                       
                    //word 文件的图标
                    case 'doc':
                    case 'docx':
                        $show = $this->icon['word'];
                        
                        /*
                            未识别文件 onclick 事件函数 otherFunc()
                        */
                        $show .=  '<span class="file-name" onclick="otherFunc()">&nbsp;' . $fileName . '</span>';
                        $show .= '<span class="file-size">' . $fileSize . '</span>';
                        $show .=  '<br>';
                        $shows .= $show;
                        break;
                        
                    //excel 文件的图标
                    case 'xls':
                    case 'xlsx':
                        $show = $this->icon['excel'];
                        
                        /*
                            未识别文件 onclick 事件函数 otherFunc()
                        */
                        $show .=  '<span class="file-name" onclick="otherFunc()">&nbsp;' . $fileName . '</span>';
                        $show .= '<span class="file-size">' . $fileSize . '</span>';
                        $show .=  '<br>';
                        $shows .= $show;
                        break;
                        
                    //md 文件的图标
                    case 'md':
                        $show = $this->icon['md'];
                        
                        /*
                            未识别文件 onclick 事件函数 otherFunc()
                        */
                        $show .=  '<span class="file-name" onclick="otherFunc()">&nbsp;' . $fileName . '</span>';
                        $show .= '<span class="file-size">' . $fileSize . '</span>';
                        $show .=  '<br>';
                        $shows .= $show;
                        break;
                        
                    //css 文件的图标
                    case 'css':
                        $show = $this->icon['css'];
                        
                        /*
                            未识别文件 onclick 事件函数 otherFunc()
                        */
                        $show .=  '<span class="file-name" onclick="otherFunc()">&nbsp;' . $fileName . '</span>';
                        $show .= '<span class="file-size">' . $fileSize . '</span>';
                        $show .=  '<br>';
                        $shows .= $show;
                        break;
                        
                    //javascript 文件的图标
                    case 'js':
                        $show = $this->icon['javascript'];
                        
                        /*
                            未识别文件 onclick 事件函数 otherFunc()
                        */
                        $show .=  '<span class="file-name" onclick="otherFunc()">&nbsp;' . $fileName . '</span>';
                        $show .= '<span class="file-size">' . $fileSize . '</span>';
                        $show .=  '<br>';
                        $shows .= $show;
                        break;
                        
                    //json 文件的图标
                    case 'json':
                        $show = $this->icon['json'];
                        
                        /*
                            支持文件打开的方法是加了个 onclick 事件
                            
                            调用的是文本文件事件函数 textFunc(文件内容, 绝对路径)
                            第一个参数 是 url 加密后的文件数据内容
                            第二个参数 是文件绝对路径
                        */
                        $show .=  '<span class="file-name" onclick="textFunc(\'' . urlencode(file_get_contents($value)) . '\', \'' . $value . '\')">&nbsp;' . $fileName . '</span>';
                        $show .= '<span class="file-size">' . $fileSize . '</span>';
                        $show .=  '<br>';
                        $shows .= $show;
                        break;
                        
                    //chm 文件的图标
                    case 'chm':
                        $show = $this->icon['chm'];
                        
                        /*
                            未识别文件 onclick 事件函数 otherFunc()
                        */
                        $show .=  '<span class="file-name" onclick="otherFunc()">&nbsp;' . $fileName . '</span>';
                        $show .= '<span class="file-size">' . $fileSize . '</span>';
                        $show .=  '<br>';
                        $shows .= $show;
                        break;
                        
                    // 可执行文件的图标
                    case 'exe':
                    case 'phar':
                        $show = $this->icon['execute'];
                        
                        /*
                            未识别文件 onclick 事件函数 otherFunc()
                        */
                        $show .=  '<span class="file-name" onclick="otherFunc()">&nbsp;' . $fileName . '</span>';
                        $show .= '<span class="file-size">' . $fileSize . '</span>';
                        $show .=  '<br>';
                        $shows .= $show;
                        break;
                        
                    //xml 文件的图标
                    case 'xml':
                        $show = $this->icon['xml'];
                        
                        /*
                            支持文件打开的方法是加了个 onclick 事件
                            
                            调用的是文本文件事件函数 textFunc(文件内容, 绝对路径)
                            第一个参数 是 url 加密后的文件数据内容
                            第二个参数 是文件绝对路径
                        */
                        $show .=  '<span class="file-name" onclick="textFunc(\'' . urlencode(file_get_contents($value)) . '\', \'' . $value . '\')">&nbsp;' . $fileName . '</span>';
                        $show .= '<span class="file-size">' . $fileSize . '</span>';
                        $show .=  '<br>';
                        $shows .= $show;
                        break;
                        
                     //其它文件的图标
                    default:
                        $show = $this->icon['other'];
                        
                        /*
                            未识别文件 onclick 事件函数 otherFunc()
                        */
                        $show .=  '<span class="file-name" onclick="otherFunc()">&nbsp;' . $fileName . '</span>';
                        $show .= '<span class="file-size">' . $fileSize . '</span>';
                        $show .=  '<br>';
                        $shows .= $show;
                }
            }
        }
        return $shows . '<br><br>';
    }
    
    /*
      绝对路径转相对路径
      注意：1.只在网站根目录以下的文件才有效地播放和显示资源
            2.只在linux和unix系统下才有效，windows系统下不兼容
    */
    private function absolute2relative($absPath){
        $self = $selfPathArr = explode('/', __DIR__);
        $abs = $absPathArr = explode('/', $absPath);
        $relPathArr = array();
        
        $i = 0;
        foreach($self as $val){
            if($val == $abs[$i]){
                array_shift($selfPathArr);
                array_shift($absPathArr);
            }else{
                break;
            }
            $i++;
        }
        
        if(count($selfPathArr) > 0){
            foreach($selfPathArr as $v){
                array_push($relPathArr, '..');
            }
        }else{
            array_push($relPathArr, '.');
        }
        
        foreach($absPathArr as $value){
            array_push($relPathArr, $value);
        }

        return implode('/', $relPathArr);
    }
    
    //魔术方法访问私有属性，只允许访问图标属性 icon
    public function __get($propertyName){
        if($propertyName == 'icon')
            return $this->$propertyName;
        else
            return;
    }
    
    //递归统计目录大小
    private function dirSize($directory){
        $dir_size = 0;                                         //用来累加各个文件大小：
        if($dir_handle = @opendir($directory)) {               //打开目录， 并判断是否能成功打开
            while( $filename = readdir($dir_handle) ) {       // 循环遍历目录下的所有文件
                if($filename != '.' && $filename != '..') {    //一定要排除两个特殊的目录
                    $subFile = $directory . "/" . $filename;   // 将目录下的子文件和当前目录相链接
                    if(is_dir($subFile))                      //如果为目录
                        $dir_size += $this->dirsize($subFile) ;       //递归地调用自身函数，求子目录的大小
                    if(is_file($subFile) )                    //如果是文件
                        $dir_size += filesize ($subFile);      //求出文件的大小并累加
                }
            }
            closedir($dir_handle) ;                            //关闭文件资源
            return $dir_size;                                  //返回计算后的目录大小
        }
    }

}